Oracle中length和lengthb的区别介绍:


SQL> select length('51博客') from dual;


LENGTH('51博客')

----------------

4



SQL> select lengthb('51CTO博客') from dual;


LENGTHB('51CTO博客')

--------------------

9


区别:length求的是字符长度,lengthb求的是字节长度。


-------------------------------------------------------------------------------


SQL> select to_char(sysdate) from dual;


TO_CHAR(SYSDATE)

----------------

04-11月-13



SQL> select length(sysdate) from dual;


LENGTH(SYSDATE)

---------------

9




SQL> select lengthb(sysdate) from dual;


LENGTHB(SYSDATE)

----------------

10


length返回的是字符数

lengthb返回的是字节数

汉字“月”在length时,返回的时1

而在lengthb时返回的时2


length指的是字符个数,lengthb指的是字节数。字符个数跟数据库字符集有很大关系。length和lengthb的参数都为varchar2型,因此length(sysdate)有一个隐式的类型转换,实际上等同于length(to_char(sysdate)),ORACLE安装好后默认的NLS_DATE_FORMAT参数值为DD-MON-RR,结果就相当于length('28-9月 -05')和
lengthb('28-9月 -05')了,其结果就是9和10。


官网上关于length的说明http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions088.htm#SQLRF00658