The LENGTH functionsreturn the length of char. LENGTH calculates length usingcharacters as defined by the input character set.数据库
--返回以字符为单位的长度.spa
LENGTHB usesbytes instead of characters.code
--返回以字节为单位的长度.orm
LENGTHC usesUnicode complete characters.字符串
--返回以Unicode彻底字符为单位的长度.input
LENGTH2 usesUCS2 code points.string
--返回以UCS2代码点为单位的长度.it
LENGTH4 usesUCS4 code points.io
--返回以UCS4代码点为单位的长度.function
lengthb(string)计算string所占的字节长度:返回字符串的长度,单位是字节
length(string)计算string所占的字符长度:返回字符串的长度,单位是字符
对于单字节字符,LENGTHB和LENGTH是同样的.
如能够用length(‘string’)=lengthb(‘string’)判断字符串是否含有中文。
一个汉字在Oracle数据库里占多少字节跟数据库的字符集有关,UTF8时,长度为三。
select lengthb(''飘'') from dual 可查询汉字在Oracle数据库里占多少字节
SELECT LENGTH('CANDIDE') "Length in characters"
FROM DUAL;
Length in characters
--------------------
7
The next example assumes a double-byte database character set.
SELECT LENGTHB ('CANDIDE') "Length in bytes"
FROM DUAL;
Length in bytes
---------------
14
SQL> select length('北京') from dual;
LENGTH('北京')
--------------
2
SQL> select lengthb('北京') from dual;
LENGTHB('北京')
---------------
6
SQL> select lengthb('BeiJing') from dual;
LENGTHB('BEIJING')
------------------
7
SQL> select length('BeiJing') from dual;
LENGTH('BEIJING')
-----------------
7
值得一提的是:
在不一样的数据库,由于字符集的不一样,LENGTHB获得的值可能会不同。如ZHS16GBK采用两个byte位来定义一个汉字。而在UTF8,采用3个byte。
--查看字符集语句
SQL> select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
PARAMETER VALUE