当业务需求需要对一个混合字符串排序的时候,数字会按照首字母大小排序,如下面的2,其实应该排在10的上面,遇到这种问题除了自己写代码做排序能否通过sql语句修改呢?
这里就介绍一种方式(也许不是这样解释,这只是我的个人理解)
select * from port order by STATUS DESC,left(name,7),convert(substr(name,9,length(name)-1),SIGNED)
left(str,len):第一个参数需要排序的字段,第二个参数是按字符串排序规则的长度(从左至右)
substr(str,len1,len2):第一个参数排序的字段,第二个从该字段的哪个开始按数字比,比较的结束位置
有更好的方式欢迎留言