我正在寻找一种对门牌号码进行排序的方法。数字存储为字符串,因为虽然大多数是数字,但有些字母会附加一个字母。例如:
有没有办法按照以下方式订购这些?
答案 0 :(得分:3)
这是你想要的:我希望你使用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
答案 1 :(得分:0)
另一种方法
select * from tbl order by
stuff(val+'a',patindex('%[^0-9]%',val+'a'),len(val),'')*1