(后端)SQL SERVER 字符串按数字排序

时间:2021-03-31 06:23:17

应用于B1-1,B1-2,B10-1,B11-1

sqlserver肯定不能按照字符串进行排序,需要进行处理一番:  

select CONVERT(varchar, LEFT(code,1)),convert(int, RIGHT(Replace(code,'-',''), LEN(code)-2)) from xxx a where 1 = 1
order by CONVERT(varchar, LEFT(code,1)) ASC, convert(int, RIGHT(Replace(code,'-',''), LEN(code)-2)) asc

先取出第一位字符进行升序A,B,C..G,正常的顺序保证了。

第二步,剩下的数字转换为int进行处理(注意先替换掉-),asc升序排列,1,2,3,4,5