加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Oracle中何时使用vsize函数而不是length函数的有用示例?

发布时间:2020-12-12 12:55:16 所属栏目:百科 来源:网络整理
导读:似乎vsize()和length()返回相同的结果.有谁知道何时使用vsize而不是长度的实际例子? select vsize(object_name),length(object_name) from user_objects 结果: /468ba408_LDAPHelper 20 20/de807749_LDAPHelper 20 20A4201_A4201_UK 14 14A4201_PGM_FK_I 1
似乎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

解决方法

好吧,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真正用于了解数据的内部存储要求.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读