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

07-24 09:16