我有以下值:d1, d45, d79, d33, d100
我想从我的表中按升序对这些变量进行排序。
获取输出的查询是什么:
d1
d33
d45
d79
d100
答案 0 :(得分:1)
你想要的是一种“自然排序”。对于Microsoft SQL Server 2005,请参阅this question。对于其他语言,请参阅(例如)this other question。
答案 1 :(得分:0)
抱歉,根本不是SQL的答案。 :)对于只有一个字母的变体按长度排序和alpha。
答案 2 :(得分:0)
如果可以保证/ \ w \ d + / ...的模式
在postgres中:
select foo from bar order by cast(substring(foo from 2) as int)
..和其他SQL风格类似。昂贵的头脑。
编辑:androids解决方案看起来也很好:
..order by char_length(foo),foo
答案 3 :(得分:0)
如果我们可以假设数据值只包含字母d和数值,那么您也可以使用:
select column from YourTable
order by convert(int, replace(column, 'd', ''))
如果它包含任何其他字母,则此方法很快就会变得无法使用:
select column from YourTable
order by convert(int,
replace(replace(replace(replace(replace(
column, 'a', ''),
'b', ''),
'c', ''),
'd', ''),
'e', '')
)