如何在 SQL Server 中对高级字母数字字符串进行排序

问题描述 投票:0回答:0

如何在 SQL Server 中进行字母数字排序,如下所示

1A1
1A2
1A3
1A10
1A14
1A15
1A16
1A141
1A149
1A150
2A1
3B1
4C3
4C4
7E1
9999A7777

我写了这样的代码

SELECT [failure_mode_code]
FROM dst.Failure_mode
ORDER BY
    CAST(LEFT([failure_mode_code], PATINDEX('%[A-Z]%', [failure_mode_code] + 'X') - 1) AS INT),
    SUBSTRING([failure_mode_code], PATINDEX('%[A-Z]%', [failure_mode_code] + 'X'), LEN([failure_mode_code])),
    [failure_mode_code]

但我得到这个结果:

1A10
1A1
1A14
1A141
1A149
1A15
1A150
1A16
1A2

这里 1A2 应该在 1A1 之后,1A149 也在 1A15 之前

你能帮我排序吗?

sql sql-server sql-order-by
© www.soinside.com 2019 - 2024. All rights reserved.