[英]How to properly sort alphanumeric in SQL Server 2000
MS SQL Server 2000 MS SQL Server 2000
I have a column in Table A called Name. 我在表A中有一列称为名称。 I wish to sort the Name field. 我希望对“名称”字段进行排序。 Many but not all of the records for Name start will KL and are followed by a number (KL 1234, KL 2, KL 323, etc). 名称开始的许多但不是全部记录将是KL,后跟一个数字(KL 1234,KL 2,KL 323等)。
Able 能够
Bravo 喝彩
KL 2 吉隆坡2
KL 323 KL 323
KL 1234 吉隆坡1234
Zebra 斑马
If I use 如果我用
Select Name from A
Order by Name
I get 我懂了
Able 能够
Bravo 喝彩
KL 1234 吉隆坡1234
KL 2 吉隆坡2
KL 323 KL 323
Zebra 斑马
I want 我想要
Able 能够
Bravo 喝彩
KL 2 吉隆坡2
KL 323 KL 323
KL 1234 吉隆坡1234
Zebra 斑马
If they all started with KL I could use 如果他们都以KL开始,我可以使用
Select Name from A
Order by cast(replace(name, 'KL', '') as big int)
but this generates an "unble to cast name as big int" error for values that do not start with KL 但是对于不是以KL开头的值,这会生成“无法将名称转换为big int”错误
Thanks for any help. 谢谢你的帮助。
Try this: 尝试这个:
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
updated wrong closing ) after comment 评论后更新了错误的结束)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.