sql - 对 SQL Server 中包含数字的 VARCHAR 列进行排序?
问题描述
我有一列,其中数据有带数字的字母。
例如:
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(LEFT(name_subagent, PATINDEX('%[^0-9]%', name_subagent + 'a') - 1) as int)
推荐阅读
- arrays - 为什么我的数组中的原始项目被 Object.assign 覆盖?
- angularjs - Elastic Beanstalk:从 SPA 中删除 hashbang url
- javascript - 如何使用 CSS 进行单基索引?
- python-3.x - 如何根据Python中列中字符串的前缀过滤嵌套列表
- mysql - MYSQL sum() 排除记录
- jquery - JQuery - 删除列表项的返回 ID
- ruby-on-rails - 如何使用 rspecs 测试条带故障案例?
- python-2.7 - 理解python中的init和方法调用
- angular - Angular Firestore Admin Auth Guard
- java - 如何使用 apache HttpClient 设置读取超时?