获取字符长度


The LENGTH functionsreturn the length of char. LENGTH calculates length usingcharacters as defined by the input character set.

     --返回以字符为单位的长度.

LENGTHB usesbytes instead of characters.

     --返回以字节为单位的长度.

LENGTHC usesUnicode complete characters.

     --返回以Unicode完全字符为单位的长度.

LENGTH2 usesUCS2 code points.

     --返回以UCS2代码点为单位的长度.

LENGTH4 usesUCS4 code points.

    --返回以UCS4代码点为单位的长度.


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


你可能感兴趣的:(获取字符长度)