很多时候我们往数据库填写数字时,往往会忽略一个排序问题,譬如:表1,字段1
字段1每一行填写内容分别是0,1,2,3,4,5。。。。。10,11,12。。。
当你使用order by 字段1的时候,结果会显示
0,1,10,11,12。。。2,3,4,5
这就是排序规则的问题。
有两种解决方法:
方法一:
select * from 表1 order by LEFT(字段1,PATINDEX('%[0-9]%',字段1)-1),STUFF(字段1,1,PATINDEX('%[0-9]%',字段1)-1,'')*1
这个方法有缺点,需要更长的时间运算
方法二:
统一数字位数,譬如我预计这个字段日后最大使用位置不超过5位,不满5位则将数字补充0
例如,00001,00002,00003。。。。00010,00011,00012。。。
这样的方式,直接order by就可以了,只是在填写数字时麻烦一点,编程写代码时要花点心思,日后扩展位数长度时要注意而已