BLOBのサイズを人間が読める形式で取得するために、SQLクエリをどのように記述しますか?この例は、大きな単語の文書が表のBLOBに格納されているようなものです。私のような何かを実行したい:SQLを使用してOracle BLOB列に格納されたファイルの読取り可能な「ファイル・サイズ」を戻すエレガントな方法は何ですか?
select fnc_getReadableSize(documents.doc) from documents where id = ?
出力: 23.4メガバイト
BLOBのサイズを人間が読める形式で取得するために、SQLクエリをどのように記述しますか?この例は、大きな単語の文書が表のBLOBに格納されているようなものです。私のような何かを実行したい:SQLを使用してOracle BLOB列に格納されたファイルの読取り可能な「ファイル・サイズ」を戻すエレガントな方法は何ですか?
select fnc_getReadableSize(documents.doc) from documents where id = ?
出力: 23.4メガバイト
「読める」部分は、私がより強調されているべきものです。ここに私が今まとめたものがあります。
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
SELECT DBMS_LOB.GETLENGTH(COLUMN_NAME) FROM DOCUMENTS
「読みやすい」部分を強調する必要がありました。私はWITH句を使用して定数を確立した後、KBとMBのバリエーションが即時の1つのレポートの必要性に十分であると恣意的に判断しました。 –
OPで尋ねられないが、OPで尋ねられないように、BFILEでも動作する可能性があります。 'select dbms_lob.getlength(bfilename( 'MYDIR'、 'oracle.png'))s from dual;' – lkuty
より簡単に/より多くのreadbaleは 'いつバイトサイズ<メガバイトTHEN'? – jpmc26