繁体   English   中英

如何在SQL Server 2000中正确对字母数字进行排序

[英]How to properly sort alphanumeric in SQL Server 2000

MS SQL Server 2000

我在表A中有一列称为名称。 我希望对“名称”字段进行排序。 名称开始的许多但不是全部记录将是KL,后跟一个数字(KL 1234,KL 2,KL 323等)。

表A

名称

能够
喝彩
吉隆坡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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM