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;