我正在寻找一种对门牌号进行排序的方法。数字存储为字符串,虽然大多数是数字,但有些附加了一个字母。例如:
- 1002
- 29C
- 1
- 205
- 105A
有没有办法按照下面的顺序订购这些?
- 1
- 29C
- 105A
- 205
- 1002
我正在寻找一种对门牌号进行排序的方法。数字存储为字符串,虽然大多数是数字,但有些附加了一个字母。例如:
有没有办法按照下面的顺序订购这些?
这就是你想要的:我希望你正在使用SQL SERVER
select * from tbl order by
case when
PATINDEX('%[^0-9]%',val) = 0
THEN
val
ELSE
cast(Left(val,PATINDEX('%[^0-9]%',val)-1) as int)
END
另一种方法
select * from tbl order by
stuff(val+'a',patindex('%[^0-9]%',val+'a'),len(val),'')*1