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

本文通过实例解释了字符和字节的区别,展示了如何使用Length和Lengthb函数来判断记录值中是否存在中文内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  今天在看书时,一个很浅显的问题却百撕不得骑姐,最后网友的几个字,豁然........
首先了解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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29014732/viewspace-772714/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值