时间给了够幸福的结局

oracle length and lengthb

LENGTH──返回以字符为单位的字符串长度。

LENGTHB──返回以字节为单位的字符串长度,它和类型定义中的长度是一个概念,比如你定义的varchar2(10)中的10。在不同的数据库,因为字符集的不同,LENGTHB得到的值可能会不一样。比如ZHS16GBK采用两个byte位来定义一个汉字,而UTF8则用3个byte来定义一个汉字。

笔者的数据库是UTF8,测试得到以下结果。

SQL> SELECT USERENV('LANGUAGE') FROM DUAL;
 
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.UTF8

SQL> SELECT length('abcd') FROM dual;
 
LENGTH('ABCD')
--------------
             4
 
SQL> SELECT lengthb('abcd') FROM dual;
 
LENGTHB('ABCD')
---------------
              4

SQL> SELECT length('新春快乐') FROM dual;
 
        LENGTH('新春快乐')
----------------------
                     4

SQL> SELECT lengthb('新春快乐') FROM dual;
 
        LENGTHB('新春快乐')
-----------------------
                     12

通过这个示例,我们可以看出,LENGTH和 LENGTHB函数的一个重要用处,就是用来判断记录值里是否有中文内容。 

如果有中文,那么LENGTH() != LENGTHB()

如果没有中文,那么LENGTH() == LENGTHB()

posted on 2013-08-27 15:57  时间给了够幸福的结局  阅读(199)  评论(0编辑  收藏  举报