我有一个要求,我必须按字母数字列在 SQL 查询中应用排序,以便其中的值按如下方式排序:
AD
AH
AK1
B1
B2
B3x
B3y
B11
C1
C6
C12x
UIP
而不是默认方式:
AD
AH
AK1
B1
B11
B2
B3x
B3y
C1
C12x
C6
UIP
我能够编写以下 SQL 语句:
SELECT [MyColumn]
FROM [MyTable]
ORDER BY
LEFT([MyColumn], PATINDEX('%[0-9]%', [MyColumn]) - 1),
CONVERT(INT, SUBSTRING([MyColumn], PATINDEX('%[0-9]%', [MyColumn]), LEN([MyColumn]) - (PATINDEX('%[0-9]%', REVERSE([MyColumn]))))),
RIGHT([MyColumn], PATINDEX('%[0-9]%', [MyColumn]) - 1)
我只需要知道如何以有条件的方式实现它,这样它就不会因为仅 alpha 的值而被触发,否则它会给出错误,或者是否有办法让它与它一起工作?
PS环境是SQL Server 2014。