SQL中substr的注意事项

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 16:07 点击:

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

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

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

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

        在程序中往往我们会使用substr函数作为一个输入语句的控制,比如更新表中一条数据,如果表中某一属性要求5位长度,我们会用上述两条语句保证不插入过长的语句,引起数据库报错 。例如
view plain
UPDATE <em>SCHOOL </em> 
SET <em>dept_no</em>=substr('高十二班',1,5) 
WHERE <em>id</em>=12 
        这里面dept_no要求5位数据。但是,殊不知substr对于非英文字符不能起到我们想要的效果。由于每个汉字占2位,但是substr会把一个汉字当做字符串中的一位。当我们用这条语句更新数据库表中要求长度只有5的属性时,会报错的。  

作者“林昊@mattlinsheep的专栏”

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • sql常见面试题
      • SQL SERVER 2005性能之跟踪
      • SQL编程(一)
      • LINUX上RMAN自动备份脚本
      • sql server面试题
      • 如何将多个SQL查询统计结果一次显示出来
      • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
      • SQL小技巧系列 --- 行转列合并
      • sql server 列转行
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1