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

Bri*_*ian 4 sql oracle plsql

您将如何编写SQL查询以更可读的形式获取blob的大小?例如,大型word文档存储在表格中的blob中.我想要执行类似的事情:

select fnc_getReadableSize(documents.doc) from documents where id = ?
Run Code Online (Sandbox Code Playgroud)

输出:23.4 MB

Bri*_*ian 9

"可读"部分是我应该更加强调的部分.这是我现在放在一起的东西.

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
Run Code Online (Sandbox Code Playgroud)

  • 是不是更容易/更多readbale做什么?WHEN byte_size <MEGABYTE THEN`? (2认同)

dpb*_*ley 5

SELECT DBMS_LOB.GETLENGTH(COLUMN_NAME) FROM DOCUMENTS
Run Code Online (Sandbox Code Playgroud)