[英]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.