Sql server “对混合值字符串排序”;以数字表示;
我正在寻找一种对门牌号进行排序的方法。数字以字符串形式存储,因为大多数数字都是数字,而有些数字会附加一个字母。例如:Sql server “对混合值字符串排序”;以数字表示;,sql-server,tsql,sorting,Sql Server,Tsql,Sorting,我正在寻找一种对门牌号进行排序的方法。数字以字符串形式存储,因为大多数数字都是数字,而有些数字会附加一个字母。例如: 1002 29C 一, 205 105A 是否有办法按照以下要求订购 一, 29C 105A 205 1002 以下是您想要的:我希望您使用的是SQL SERVER select * from tbl order by case when PATINDEX('%[^0-9]%',val) = 0 THEN val ELSE cast(Left
- 1002
- 29C
- 一,
- 205
- 105A
- 一,
- 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
是在表中还是什么…?对不起,是的,这些是表中的值。您使用的是Sql Server、MySql、Oracle还是什么…?好的..然后我刚刚发布了答案。。