【发布时间】:2013-08-02 10:31:11
【问题描述】:
我有一个表“MyTable”,其后面的列 ID 为 varchar(50)。
ID
----------
10
100
700-6 0110B512
700-6 0110B513
700-8 0110B512
700-9 0110B512
我需要用输出对该列进行排序
ID
----------
10
100
700-6 0110B512
700-8 0110B512
700-9 0110B512
700-6 0110B513
请帮忙!!
我试过这样,但输出不如预期。
SELECT * FROM MyTable
ORDER BY
Case
When IsNumeric(ID) = 1 then LEFT(Replicate('0',101) + ID, 100)
When IsNumeric(ID) = 0 then RIGHT(Replicate('0',101) + ID, 100)
Else ID
END
ASC
【问题讨论】:
-
Isnumeric(id) = 1 会被击中吗?字段 ia varchar?
-
它将被击中 10 和 100 !
-
您最多有三位数字吗?所以 1、10、100、700 但不是 1000、2000、10000?
-
它将始终为 3 位数字,大多数情况下仅为 700。
-
@vijay in mysql 如果你只是写 select * from table_name orderby column_name 然后它会自动排序,我不知道它是否适用于 sql server 2005。只需检查它
标签: sql sql-server-2005