当前位置: 代码迷 >> Sql Server >> between 用于varchar字段 查询结果出错!该如何解决
  详细解决方案

between 用于varchar字段 查询结果出错!该如何解决

热度:102   发布时间:2016-04-27 14:57:07.0
between 用于varchar字段 查询结果出错!!!!!!!!!
顾客信息表里会员卡卡号(c_cardno)的数据类型为 varchar
如果用
c_cardno between '800000000000' and '899999999999'

来查询考号段 会查询出 82048 类的卡号

这是什么原因????
是因为 between 用于字符类型的原因???

这种情况只能将c_cardno 转换成bigint 来查询吗????

------解决方案--------------------
因为字符串比较是从首字母开始比对ASCII码,所以'9'是大于'81'的,因为对比第一位的时候9的ASCII码比8大,然后就不比第二位了。所以比对字符串形式的数字的时候,要么先把字符串转成数字,要么先把位数补齐,比如把'9'和'81'都补成三位的字符串'009'和'081'再对比。这样就不会出错了。
  相关解决方案