lengthb(string)计算string所占的字节长度 :返回字符串的长度,单位是字节

length(string)计算string所占的字符长度 :返回字符串的长度,单位是字符


对于单字节字符,LENGTHB和LENGTH是一样的.

如可以用length(‘string’)=lengthb(‘string’)判断字符串是否含有中文。



select   length('我')   from   dual       --返回1  

  select   lengthb('我')   from   dual     --返回2  

  select   length('AB')   from   dual       --返回2  

  select   lengthb('AB')   from   dual     --返回2 




开发环境中:有的表中字段类型定义为varchar2(20)有的表中字段类型定义为varchar2(20 byte)



varchar2(20)和varchar2(20 byte)是否相同呢?



相不相同是由 数据库的参数NLS_LENGTH_SEMANTICS决定的,有两个单位,char(字符)或者字节(byte),该参数默认值为BYTE。



所以说,在默认情况下 varchar2(20) = varchar2(20 byte)。如果参数值为CHAR 就不相等。



建议:使用统一的格式如:varchar2(20)



演示:



SQL> show parameter nls_length_semantics;





查看一个表字段数据类型:desc ACC_MER_SHADOW;