dbms_lob.getlength () vs length (), aby znaleźć rozmiar obiektu blob w oracle

81

Otrzymuję te same wyniki z

select length(column_name) from table

tak jak

select dbms_lob.getlength(column_name) from table

Jednak odpowiedzi na to pytanie wydają się sprzyjać używaniu dbms_lob.getlength().

Czy są jakieś korzyści z używania dbms_lob.getlength()?

Jeśli to zmieni odpowiedź, wiem, że wszystkie bloby są obrazami .bmp (nigdy wcześniej nie pracowałem z obiektami blob).

Społeczność
źródło

Odpowiedzi:

115

lengthi dbms_lob.getlengthzwraca liczbę znaków po zastosowaniu do CLOB (znak LOB). Po zastosowaniu do BLOB (Binary LOB), dbms_lob.getlengthzwróci liczbę bajtów, która może różnić się od liczby znaków w zestawie znaków wielobajtowych.

Ponieważ dokumentacja nie określa, co się dzieje, gdy lengthskładasz wniosek o BLOB, odradzałbym używanie go w takim przypadku. Jeśli chcesz liczbę bajtów w BLOB, użyj dbms_lob.getlength.

Vincent Malgrat
źródło
9
Lub, jeśli wiesz, że pracujesz z BLOBami, a nie z CLOBami lub NCLOB, użyj lengthb (BLOB), aby uzyskać liczbę bajtów w BLOB.
Janek Bogucki