4

vsize() と length() は同じ結果を返すようです。長さの代わりにvsizeをいつ使用するかの実用的な例を知っている人はいますか?

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

結果:

/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
4

2 に答える 2

7

ええと、Length()は文字引数(CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB、またはNCLOB)を取りますが、VSize()はほぼすべてのデータ型を取ります。したがって、Length()に文字以外のデータ型を渡す場合は、暗黙の変換。

長さも文字セットに影響されます。

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;

...与える..。

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は、データの内部ストレージ要件を理解する上でIMHOに非常に役立ちます。

于 2008-12-30T14:30:51.320 に答える
2

参照: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1897591221788

于 2008-12-29T21:28:01.883 に答える