簡體   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