SQL中substr的注意事项

        相信大家对substr已经用得非常熟悉了,近日在工作中发现了一个bug,就是substr只能作为处理英文字符串的函数使用,对于汉字往往会引起缺陷。举例说明如下:

        1.substr('一二三四',1,5)

        2.substr('一二三四五六',1,5)

        第一个的正确答案是“一二三四”,而第二的正确答案是“一二三四五”。

        在程序中往往我们会使用substr函数作为一个输入语句的控制,比如更新表中一条数据,如果表中某一属性要求5位长度,我们会用上述两条语句保证不插入过长的语句,引起数据库报错 。例如

      UPDATE SCHOOL 
      SET dept_no=substr('高十二班',1,5)
      WHERE id=12
        这里面 dept_no要求5位数据。但是,殊不知substr对于非英文字符不能起到我们想要的效果。由于每个汉字占2位,但是substr会把一个汉字当做字符串中的一位。当我们用这条语句更新数据库表中要求长度只有5的属性时,会报错的。  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值