子串的最大值 - Informix

Max of substring - Informix

我必须请求您帮助 SQL 查询 Informix,非常感谢任何评论。

contno 字段 (varchar) 的数据如下所示:

C4698  
B0458  
F400221  
D3776  
A0636  
D3787  
B7781  
D13799  
BXXXXX

我需要找到 contno 字符串中字母后面的数字的最大值,所以尝试了:

SELECT Max(to_number(contno[2,6]))
FROM informix.customer
WHERE contno[1,1] = "B"

...但得到

Error: A character to numeric conversion process failed (State:37000, Native Code: FFFFFB43)

也排除 'BXXXX' 值似乎不起作用。啊,也尝试了 SUBSTRING 函数,结果相同。

当跳过 max 函数和 运行 时:

SELECT to_number(contno[2,6])
FROM informix.customer
WHERE contno[1,1] = "B"

...我得到的列表看起来像这样:

4698.0  
458.0  
400221.0  
3776.0  
0636.0  
3787.0  
7781.0  
13799.0

...但是当尝试 ORDER BY 时出现同样的错误。

知道如何解决我的问题吗?

尝试使用 MATCHES 运算符只获取数字:

SELECT  MAX(contno[2,6]::INT)
FROM    customer
WHERE   contno[1,1] = "B"
        AND (
                contno[2,6] MATCHES '[0-9][0-9][0-9][0-9][0-9]'
            OR  contno[2,6] MATCHES '[0-9][0-9][0-9][0-9]'
            OR  contno[2,6] MATCHES '[0-9][0-9][0-9]'
            OR  contno[2,6] MATCHES '[0-9][0-9]'
            OR  contno[2,6] MATCHES '[0-9]'
        );