代码之家  ›  专栏  ›  技术社区  ›  Brian

使用SQL返回存储在Oracle blob列中的文件的可读“文件大小”的优雅方法是什么?

  •  4
  • Brian  · 技术社区  · 16 年前

    您将如何编写SQL查询以更易于阅读的形式获取blob的大小?该示例类似于一个大型Word文档存储在表的blob中。我想执行如下操作:

    select fnc_getReadableSize(documents.doc) from documents where id = ?
    

    输出: 23.4兆字节

    2 回复  |  直到 9 年前
        1
  •  9
  •   Brian    16 年前

    “可读性”部分是我应该更加强调的。这是我目前的想法。

    WITH file_sizes AS
         (SELECT 1048576 MEGABYTE, 1024 KILOBYTE,
                 DBMS_LOB.GETLENGTH (BLOB_COLUMN) byte_size
            FROM BLOB_COLUMN)
    SELECT (CASE TRUNC (byte_size / MEGABYTE)
               WHEN 0
                  THEN TO_CHAR ((byte_size / KILOBYTE), '999,999') || ' KB'
               ELSE TO_CHAR ((byte_size / MEGABYTE), '999,999.00') || ' MB'
            END
           ) display_size
      FROM file_sizes
    
    
    Output:
    
    DISPLAY_SIZE  
    --------------
           1.88 MB
         433 KB   
         540 KB   
         333 KB   
           1.57 MB
           1.17 MB
    
        2
  •  5
  •   T.S.    9 年前
    SELECT DBMS_LOB.GETLENGTH(COLUMN_NAME) FROM DOCUMENTS