Каков элегантный способ вернуть читаемый «размер файла» файла, хранящегося в столбце блоба Oracle, с помощью SQL? - PullRequest
4 голосов
/ 08 мая 2009

Как бы вы написали SQL-запрос, чтобы получить размер BLOB-объекта в более удобочитаемой форме? Примером может быть что-то вроде документа большого слова, хранящегося в BLOB-объекте таблицы. Я хотел бы выполнить что-то вроде:

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

Выход: 23,4 МБ

Ответы [ 2 ]

9 голосов
/ 15 мая 2009

«Читаемая» часть - это то, что я должен был подчеркнуть больше. Вот что я сейчас собрал.

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
5 голосов
/ 08 мая 2009
SELECT DBMS_LOB.GETLENGTH(COLUMN_NAME) FROM DOCUMENTS
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...