子串的最大值 - 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]'
);
我必须请求您帮助 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]'
);