[英]How to properly sort alphanumeric in SQL Server 2000
MS SQL Server 2000
我在表A中有一列称为名称。 我希望对“名称”字段进行排序。 名称开始的许多但不是全部记录将是KL,后跟一个数字(KL 1234,KL 2,KL 323等)。
能够
喝彩
吉隆坡2
KL 323
吉隆坡1234
斑马
如果我用
Select Name from A
Order by Name
我懂了
能够
喝彩
吉隆坡1234
吉隆坡2
KL 323
斑马
我想要
能够
喝彩
吉隆坡2
KL 323
吉隆坡1234
斑马
如果他们都以KL开始,我可以使用
Select Name from A
Order by cast(replace(name, 'KL', '') as big int)
但是对于不是以KL开头的值,这会生成“无法将名称转换为big int”错误
谢谢你的帮助。
尝试这个:
Order By
Case When Left(name, 2) = 'KL'
Then 'KL' + Replace(Str(Cast(replace(name, 'KL', '') as BigInt), 12), ' ', '0')
Else name End
ORDER BY
CASE WHEN CHARINDEX(' ', name)=0 THEN name
ELSE LEFT(name, CHARINDEX(' ', name)) END,
CASE WHEN CHARINDEX(' ', name)=0 THEN 0
ELSE CONVERT(BIGINT,
SUBSTRING(name, CHARINDEX(' ', name)+1, LEN(name))) END
评论后更新了错误的结束)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.