dbms_lob.getlength () vs. length (), um die Blobgröße im Orakel zu ermitteln

80

Ich bekomme die gleichen Ergebnisse von

select length(column_name) from table

wie

select dbms_lob.getlength(column_name) from table

Die Antworten auf diese Frage scheinen jedoch die Verwendung zu begünstigen dbms_lob.getlength().

Gibt es einen Vorteil bei der Verwendung dbms_lob.getlength()?

Wenn sich die Antwort ändert, weiß ich, dass alle Blobs .bmp-Bilder sind (noch nie mit Blobs gearbeitet).

Gemeinschaft
quelle

Antworten:

114

lengthund dbms_lob.getlengthgeben Sie die Anzahl der Zeichen zurück, wenn diese auf ein CLOB (Character LOB) angewendet werden . Bei Anwendung auf ein BLOB (Binary LOB) dbms_lob.getlengthwird die Anzahl der Bytes zurückgegeben, die von der Anzahl der Zeichen in einem Mehrbyte-Zeichensatz abweichen kann.

Da in der Dokumentation nicht angegeben ist, was passiert, wenn Sie sich lengthfür ein BLOB bewerben , würde ich davon abraten, es in diesem Fall zu verwenden. Wenn Sie die Anzahl der Bytes in einem BLOB möchten, verwenden Sie dbms_lob.getlength.

Vincent Malgrat
quelle
9
Oder wenn Sie wissen, dass Sie mit BLOBs arbeiten und nicht mit CLOBs oder NCLOBs, verwenden Sie lengthb (BLOB), um die Anzahl der Bytes im BLOB abzurufen.
Janek Bogucki