我有一列,其中数据包含带数字的字母。
例如:
1 name
2 names ....
100 names
排序这些数据时,排序不正确,如何解决?我提出了一个请求,但排序不正确。
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
该表达式将查找带字符串的字母的第一个匹配项,并假定该位置之前的任何数字都是数字。您显然需要根据您的需求调整此语句,因为您的数据显然不是拉丁字符。通过一些调整,您应该能够准确实现所需的功能:
select
name_subagent
from
Subagent
order by
CAST(SUBSTRING(name_subagent,0,PATINDEX('%[A-Z]%',name_subagent)) as numeric)
注意,'%[A-Z]%'表达式。这只会寻找字符串中字母的首次出现。 我没有考虑诸如' !之类的特殊字符。',' # '等。这是您可能需要尝试并适应您的需求的地方。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。