6

Sorry about my mistake, I should provide the real sample for the question, my ID included characters inside:

sample code:

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

and this ID is of nvarchar type.

4

2 回答 2

14

昨天有一个类似的问题,我了解到您可以将hierarchyid其用于版本排序(如果您至少使用 SQL-Server 2008):

SELECT id 
FROM   student 
ORDER  BY Cast('/' + Replace(id, '.', '/') + '/' AS HIERARCHYID) 

演示

于 2013-05-17T09:40:01.633 回答
-2

您需要在任何点之后按部分的子字符串排序。这将是一个特定于数据库的 SQL 查询,由于您没有提及您使用的是哪一个,因此我无法给出详细的 SQL 示例。

这就是您可以转换小数值的方式

http://www.w3resource.com/sql/aggregate-functions/avg-decimal-places-using-cast-within-avg.php

蒂姆的回答是最好的..

但我为订单 varchar 值提供了另一种解决方案——

SELECT id 
FROM   student 
ORDER  BY ID desc
于 2013-05-17T09:46:20.120 回答