ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 关于oracle的char()以及length(char字符类型)

关于oracle的char()以及length(char字符类型)

原创 Linux操作系统 作者:Power08 时间:2013-09-14 18:48:48 0 删除 编辑
  今天在看书时,一个很浅显的问题却百撕不得骑姐,最后网友的几个字,豁然........
首先了解length(),lengthb()及char(),varchar()
length():--返回以字符为单位的长度.
lengthb():  --返回以字节为单位的长度.
char():这是一个定长字符串,会用空格填充来达到最大长度,非null的char(n)总是包含n字节的信息
varchar():这是一个变长字符串,不会用空格填充至最大长度

场景还原
SQL> select length(cast('测试'as char(5))) length from dual;
    LENGTH
----------
         3
开始一直以为结果会是2个字符,但事与愿违,查了资料也没答案,后来问网友,终于理解了

SQL> select length(cast('测试'as char(4))) length from dual;----将"测试"转换为char(4)类型
    LENGTH
----------
         2
SQL> select length(cast('测试'as char(6))) length from dual;
    LENGTH
----------
         4
在上述的测试中对于第二个,测试两字占2个字符4个字节,所以不用补空格刚好char(4),所以结果为2,即两字符
而对于第一个,测试占2字符,4字节,不足5字节,所以需要用空格补满5字节,即补一个空格(一个字符),结果就是2+1=3字符,第三个一样

o(︶︿︶)o 唉。字符,字节,傻傻分不清楚,多么sb的一个问题啊,结果搞了这么长时间。


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

如果有中文,那么Length() != Lengthb()

如果没有中文,那么Length() == Lengthb()

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29014732/viewspace-772714/,如需转载,请注明出处,否则将追究法律责任。

上一篇: EXPDP/IMPDP
请登录后发表评论 登录
全部评论

注册时间:2013-07-01

  • 博文量
    17
  • 访问量
    44481