星五博客

MSSQL中数字排序的方法

比如fname字段为Q1..Q20,用普通排序的话,会出现Q1 Q10 Q2的情况,如何解决呢?

解决方法:

select * from
tQuestionnaire
order by LEFT(fname,PATINDEX('%[0-9]%',fname)-1)
         ,STUFF(fname,1,PATINDEX('%[0-9]%',fname)-1,'')*1