97

I'm getting the same results from

select length(column_name) from table

as from

select dbms_lob.getlength(column_name) from table 

However, the answers to this question seem to favor using dbms_lob.getlength().

Is there any benefit to using dbms_lob.getlength()?

If it changes the answer, I know all of the BLOBs are .bmp images (never worked with BLOBs before).

buddemat
  • 4,552
  • 14
  • 29
  • 49

1 Answers1

136

length and dbms_lob.getlength return the number of characters when applied to a CLOB (Character LOB). When applied to a BLOB (Binary LOB), dbms_lob.getlength will return the number of bytes, which may differ from the number of characters in a multi-byte character set.

As the documentation doesn't specify what happens when you apply length on a BLOB, I would advise against using it in that case. If you want the number of bytes in a BLOB, use dbms_lob.getlength.

Vincent Malgrat
  • 66,725
  • 9
  • 119
  • 171
  • 15
    Or if you know you are working with BLOBs and not CLOBs or NCLOBs use lengthb(BLOB) to get the number of bytes in the BLOB. – Janek Bogucki Mar 03 '10 at 17:57