我有一个表,其中有一列 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/