首先了解length(),lengthb()及char(),varchar()
length():–返回以字符为单位的长度.
lengthb(): --返回以字节为单位的长度.
char():这是一个定长字符串,会用空格填充来达到最大长度,非null的char(n)总是包含n字节的信息
varchar():这是一个变长字符串,不会用空格填充至最大长度
场景还原
SQL> select length(cast('测试'as char(5))) length from dual;----将"测试"转换为char(5)类型
LENGTH
SQL> select length(cast('测试'as char(6))) length from dual;----将"测试"转换为char(6)类型
LENGTH
----------
3
SQL> select length(cast('测试'as char(6))) length from dual;----将"测试"转换为char(6)类型
LENGTH
----------
4
解释如下
测试占2字符,4字节,不足5字节,所以需要用空格补满5字节,即补一个空格(一个字符),结果就是2+1=3字符
SQL> select length(cast('测试'as char(4))) length from dual;----将"测试"转换为char(4)类型
LENGTH
----------
2
测试两字占2个字符4个字节,所以不用补空格刚好char(4),所以结果为2,即两字符
通过这个示例,我们可以看出来,Length 和 Lengthb 函数的一个重要用处,就是用来判断记录值里是否有中文内容。
如果有中文,那么Length() != Lengthb()
如果没有中文,那么Length() == Lengthb()
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29014732/viewspace-772714/,如需转载,请注明出处,否则将追究法律责任。