c# - 如何对同时包含字符串和数值的 varchar 类型列进行排序

标签 c# sql sql-server sql-server-2008

我有一个表,其列名称为“BatchNo”,并且它同时包含字符串和数值。当我输入选择查询时,我得到以下结果。

enter image description here

我想按以下格式对“BatchNo”列进行排序

enter image description here

在我的问题中, future 的批处理可能有 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

关于c# - 如何对同时包含字符串和数值的 varchar 类型列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13043002/

相关文章:

c# - 运行 ServiceHost 时无法同时支持 http 和 https url

sql - 如何进一步指定一个sqlite查询

sql-server - SQL Server - 更新时内连接

c# - 未为目标提供服务证书 '###' 在 ClientCredentials 中指定服务证书

c# - 从我在代码隐藏中没有引用的控件中删除 Id 标签是一种好习惯吗

mysql - 在MySQL数据库中添加约束保证唯一性

c# - LINQ to Entities 无法识别方法 'Int32 ToInt32(System.String)' 方法,并且无法将此方法翻译成存储表达式

sql - '' 附近的语法不正确

java - 过滤应用程序服务器上执行的 SQL 查询

C# 应用程序在特定日期自毁