sql-server - 从 SQL 中的字符串列中选择最大值

标签 sql-server max

我有一个表,其中有一列 Order 类型为 varchar,如下所示

Order
-----
Ord-998,
Ord-999,
Ord-1000,
Ord-1001,

我想得到最大值为1001

但是当我运行这个查询时,我总是得到 999 作为最大值

select 
    SUBSTRING((select isnull(MAX(OrderNo), '0000000') 
               from OrderSummary 
               where OrderNo like 'Ord%'), 5, 10) as [OrderMax]

谁能提供解决方案?

最佳答案

由于您正在最大化字符串,因此它按字母顺序排序,其中 C 大于 AAA,9 大于 10。删除字母并将其转换为 int,然后获取最大值。鉴于它始终是 Ord-###,我们可以删除 Ord- 并将余数转换为 INT。

SELECT
    MAX(CAST(SUBSTRING(OrderNo,5,LEN(OrderNo)-4) AS INT))
FROM OrderSummary
WHERE OrderNo LIKE 'Ord-%'

关于sql-server - 从 SQL 中的字符串列中选择最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48547224/

相关文章:

c++ - C++ boost 的滚动最小值和滚动最大值?

sql-server - "Error converting data type varchar to datetime"

python - Python中如何添加对应列名最大的列?

sql-server - 发现嫌疑人

sql - 正确设计SQL Server数据库

python - 仅获取特定索引处具有最低值的子列表

PHP-从唯一ID的Mysql列中获取最大值

python - 如何自动选择列表中的最大值。append - python

c# - Dapper 中间映射

sql - PowerShell 函数将多个 SQL 查询输出为 CSV