在T-SQL中排序

时间:2010-12-29 07:14:17

标签: sql-server-2005

我有一些像

这样的字符串
"999"
"555"
"7777"
"CC44"
"AAAA"
"BBBB"

我如何排序以便输出

"999"
"7777"
"555"
"AAAA"
"BBBB"
"CC44"

规则是:基于字符串的数字值按升序

我也包含了剧本

declare @tbl  Table(
    data VARCHAR(MAX)   
)

INSERT INTO @tbl (data)

SELECT '999' UNION ALL
SELECT '555' UNION ALL
SELECT '7777' UNION ALL
SELECT 'CC44' UNION ALL
SELECT 'AAAA' UNION ALL
SELECT 'BBBB' 

2 个答案:

答案 0 :(得分:0)

未经测试但是:

select col where IsNumeric(col)=1

order by IsNumeric(col) asc, col

答案 1 :(得分:0)

这不是自然排序顺序,因此您可能需要添加另一列来执行排序。如果无法做到这一点,则需要拆分数据集,对每一半进行排序,然后重新加入。

SELECT data FROM tbl WHERE columnname > "0" AND columnname < "9999" ORDER BY columnname DESC
UNION ALL
SELECT data FROM tbl WHERE columnname < "9999"
ORDER BY columnname ASC