4 Stimmen

Ein nützliches Beispiel dafür, wann die vsize-Funktion anstelle der length-Funktion in Oracle verwendet werden sollte?

Es scheint, dass vsize() und length() die gleichen Ergebnisse liefern. Kennt jemand ein praktisches Beispiel dafür, wann man vsize statt length verwenden sollte?

select vsize(object_name), length(object_name) from user_objects

Ergebnis:

/468ba408_LDAPHelper    20  20
/de807749_LDAPHelper    20  20
A4201_A4201_UK  14  14
A4201_PGM_FK_I  14  14
A4201_PHC_FK_I  14  14

7voto

David Aldridge Punkte 50293

Nun, Length() nimmt ein Zeichenargument (CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB oder NCLOB), während VSize() so ziemlich jeden Datentyp annimmt. Wenn Sie also Length() einen Nicht-Zeichen-Datentyp übergeben, muss eine implizite Konvertierung erfolgen.

Die Länge hängt auch von den Zeichensätzen ab.

drop table daa_test;
create table daa_test as select sysdate dt from dual;
alter session set nls_date_format = 'YYYY-MM-DD';
select vsize(dt)  from daa_test;
select length(dt) from daa_test;
alter session set nls_date_format = 'YYYY-MM-DD HH24:mi:ss';
select vsize(dt)  from daa_test;
select length(dt) from daa_test;

... geben ...

drop table daa_test succeeded.
create table succeeded.
alter session set succeeded.
VSIZE(DT)              
---------------------- 
7                      

1 rows selected

LENGTH(DT)             
---------------------- 
10                     

1 rows selected

alter session set succeeded.
VSIZE(DT)              
---------------------- 
7                      

1 rows selected

LENGTH(DT)             
---------------------- 
19                     

1 rows selected

VSize ist IMHO wirklich nützlich, um den internen Speicherbedarf von Daten zu verstehen.

2voto

tuinstoel Punkte 7244

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X