MSSQL中数字排序的方法

很多时候我们往数据库填写数字时,往往会忽略一个排序问题,譬如:表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就可以了,只是在填写数字时麻烦一点,编程写代码时要花点心思,日后扩展位数长度时要注意而已

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值