首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL Server 2000中对字母数字进行正确排序

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

Stack Overflow用户
提问于 2008-12-10 15:52:45
回答 2查看 1.5K关注 0票数 0

MS SQL Server 2000

我在表A中有一个名为Name的列。我希望对Name字段进行排序。Name start的许多记录都是KL,后面跟着一个数字(KL 1234、KL 2、KL 323等)。

表A

名字

有能力

太棒了

九龙内地段2

KL 323

九龙内地段1234

斑马

如果我使用

代码语言:javascript
复制
Select Name from A 
Order by Name

我得到了

有能力

太棒了

九龙内地段1234

九龙内地段2

KL 323

斑马

我想要

有能力

太棒了

九龙内地段2

KL 323

九龙内地段1234

斑马

如果它们都是从KL开始的,我可以使用

代码语言:javascript
复制
Select Name from A
Order by cast(replace(name, 'KL', '') as big int)

但是对于不是以KL开头的值,这会产生一个"unble to cast name as big int“错误

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-12-10 16:13:21

试试这个:

代码语言:javascript
复制
Order By 
    Case When Left(name, 2) = 'KL' 
        Then 'KL' + Replace(Str(Cast(replace(name, 'KL', '') as BigInt), 12), ' ', '0')
        Else name End
票数 1
EN

Stack Overflow用户

发布于 2008-12-10 16:21:59

代码语言:javascript
复制
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

更新错误的结束语)评论后

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/356547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档