sqlserver针对字符串型数字排序(针对此字符串的长度不⼀
致)
对于不规则的字符串数字排序,⽆法按照数字⼤的⼤⼩排序的原因是,字符串数字在数据库中按照ASCII码排序,从字符的第⼀个数字对⽐,⾸先就会将为⾸个数字相同的排在⼀起,在从这些字符串⾥⾯对⽐第⼆个数字,如下:
⼀组字符串为 ‘1’,‘2’,'10','11','3';
不做任何处理的排序:‘1’,'10','11','2','3';
解决⽅法1:
格式:
order by 字段名称+数字的形式进⾏排序或者 order by 字段名称*乘以数字的形式进⾏排序此时就会按照字符串中的数字排序
select * from table1 order by  aa+1
或者 select * from table1 order by  aa*1
原理:猜想是‘+’或‘*’⼀个数字之后就会将字符串的数字变为‘+’或‘*’后⾯数字的类型,此处就会变成int类型。具体的真实原理希望各位能提供注:数字为0或1测试有效,其它的数字未测试,MYSql同样适⽤
解决⽅法2:
select * from table1 order by  len(aa),aa
原理:将长度⼀致的字符串先排序,再按照字符串的ASCII码排序字符串长度的方法

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。