我有一个列名为“BatchNo”的表,它同时包含字符串和数值。当我输入一个选择查询时,我得到了以下结果。
我想按以下格式对“BatchNo”列进行排序
在我的问题中,未来的批次可能有 a,b,c .... 带有数值或只有数值的字母。我如何对该列进行排序?希望大家能帮我解决一下。
我有一个列名为“BatchNo”的表,它同时包含字符串和数值。当我输入一个选择查询时,我得到了以下结果。
我想按以下格式对“BatchNo”列进行排序
在我的问题中,未来的批次可能有 a,b,c .... 带有数值或只有数值的字母。我如何对该列进行排序?希望大家能帮我解决一下。
为什么不将表的架构更改为?
CREATE TABLE tableName
(
ShipmentNo INT,
ProjectCode VARCHAR(50),
BatchNo INT,
SubBatch INT,
.....
)
这样,就是按照你想要的方式对 valkues 进行排序。
后续问题,BatchNo
仅具有来自 的单个字符值A-Z
,例如
11a
11b
并不是
11aa
更新 1
SELECT *
FROM tableName
ORDER BY CASE ISNUMERIC(batchNo)
WHEN 1 THEN batchNo
ELSE CAST(LEFT(batchNo, LEN(batchNo) - 1) AS INT)
END
尝试这个:
SELECT *
FROM tableName
ORDER BY
CAST(LEFT(BatchNo, PATINDEX('%[^0-9]%', BatchNo + 'Z')-1) AS INT),
BatchNo
这个怎么样:
SELECT *
FROM TABLE_NAME
ORDER BY CAST(LEFT(BatchNo, PATINDEX('%[^0-9]%', BatchNo + 'A')-1) AS INT)
查询适用于仅以数值开头的字符串。