我有一个表,其列名称为“ 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
SQLFiddle Demo