为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 C# 对 SQL Server 中的字母数字列进行排序?

如何使用 C# 对 SQL Server 中的字母数字列进行排序?

C#
牛魔王的故事 2022-12-24 10:05:18
我有一些数据存储在 SQL Server 中,如下所示:A1A2A31A2A3A怎么排序呢?我试过这个查询:select namefrom Analyze_Tablegroup by nameorder by CONVERT(INT, LEFT(name, PATINDEX('%[^0-9]%', name+'z')-1)),name但这仅按第一个数字和字母顺序排序,而不按字母顺序和数字值排序
查看完整描述

2 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

我试图只对名称的数字部分进行排序,不包括第一个或最后一个字符。然后如果有 2 个相同的数字,他们将重新排序,例如 23 和 23A。这应该会给你你正在寻找的输出


select name

from Analyze_Table

group by name

order by case 

  when isnumeric(name) = 1 then cast(name as int)

  when isnumeric(left(name, 1)) = 0 and isnumeric(right(name, 1)) = 0 then cast(substring(name, 2, len(name)-2) as int)

  when isnumeric(left(name, 1)) = 0 then cast(right(name, len(name)-1) as int)

  when isnumeric(right(name, 1)) = 0 then cast(left(name, len(name)-1) as int) end

  ,name


查看完整回答
反对 回复 2022-12-24
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

如果您想要以数字开头的名称,那么这就是您的意思吗?

order by (case when name like '[0-9]%' then 1 else 2 end),
         name


查看完整回答
反对 回复 2022-12-24
  • 2 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信