在 Oracle 中何时使用 vsize 函数而不是 length 函数的有用示例?
Posted
技术标签:
【中文标题】在 Oracle 中何时使用 vsize 函数而不是 length 函数的有用示例?【英文标题】:A useful example of when to use vsize function instead of length function in Oracle? 【发布时间】:2008-12-29 21:04:39 【问题描述】:似乎 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
【问题讨论】:
【参考方案1】:嗯,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 在理解数据的内部存储需求方面确实很有用。
【讨论】:
【参考方案2】:见:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1897591221788
【讨论】:
以上是关于在 Oracle 中何时使用 vsize 函数而不是 length 函数的有用示例?的主要内容,如果未能解决你的问题,请参考以下文章