首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对包含数字的Server中的VARCHAR列进行排序?

对包含数字的Server中的VARCHAR列进行排序?
EN

Stack Overflow用户
提问于 2019-12-06 03:49:27
回答 2查看 222关注 0票数 1

我有一个列,其中的数据有字母和数字。

例如:

代码语言:javascript
复制
1 name
2 names .... 
100 names

在对数据进行排序时,它没有正确地排序,如何解决这个问题?我提出了一个请求,但没有正确排序。

代码语言:javascript
复制
select name_subagent
from Subagent
order by 
    case IsNumeric(name_subagent) 
        when 1 then Replicate('0', 100 - Len(name_subagent)) + name_subagent
        else name_subagent
end  

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-06 05:13:07

这应该能行

代码语言:javascript
复制
select name_subagent
from Subagent
order by CAST(LEFT(name_subagent, PATINDEX('%[^0-9]%', name_subagent + 'a') - 1) as int)
票数 2
EN

Stack Overflow用户

发布于 2019-12-06 04:21:19

该表达式将发现字母在字符串中的第一个出现,并假定该位置之前的任何内容都是数字。您需要根据您的需要调整此语句,因为显然您的数据不是拉丁文字符。只要稍加调整,你就能完全实现你想要的目标:

代码语言:javascript
复制
select 
    name_subagent
from 
    Subagent
order by 
    CAST(SUBSTRING(name_subagent,0,PATINDEX('%[A-Z]%',name_subagent)) as numeric)

注意,'%[A-Z]%'表达式。这将只查找字符串中字母的第一次出现。

我没有考虑特殊的字符,如'!','#‘等等。这是你可能想玩和适应你的需要的一点。

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

https://stackoverflow.com/questions/59206595

复制
相关文章

相似问题

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