我有一些像
这样的字符串"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'
答案 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