按1.99.10和1.99.9 sql server排序

use*_*512 6 sql sql-server-2008

抱歉我的错误,我应该提供问题的真实样本,我的ID包括里面的字符:

示例代码:

select ID from student order by ID

Expected output from mine          but system output
-------------------------          -----------------
JAD.1.99.9                             JAD.1.99.10
JAD.1.99.10                            JAD.1.99.9
Run Code Online (Sandbox Code Playgroud)

IDnvarchar类型.

Tim*_*ter 14

昨天有一个类似的问题,我已经知道你可以hierarchyid用于版本排序(如果你至少使用SQL-Server 2008):

SELECT id 
FROM   student 
ORDER  BY Cast('/' + Replace(id, '.', '/') + '/' AS HIERARCHYID) 
Run Code Online (Sandbox Code Playgroud)

DEMO