You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle转PostgreSQL:SQL语句中to_number函数报错求正确语法

Oracle转PostgreSQL的正确SQL写法

原Oracle语句中,to_number可仅传入文本参数,但PostgreSQL的to_number函数必须指定格式模板,这是你报错的核心原因。

针对你的需求,提供两种可行的PostgreSQL写法:

方法1:使用to_number并指定格式模板

SELECT MAX(to_number(ltrim(aefo_number, 'VE'), '999999999'))
FROM exemption
WHERE aefo_number LIKE 'E%'
   OR aefo_number LIKE 'V%';

格式模板'999999999'适配最多9位数字的场景,可根据实际数据的数字长度调整位数。

方法2:使用强制类型转换(更简洁)

若能确定ltrim(aefo_number, 'VE')的结果是纯数字字符串,可直接用PostgreSQL的强制类型转换语法:

SELECT MAX(ltrim(aefo_number, 'VE')::numeric)
FROM exemption
WHERE aefo_number LIKE 'E%'
   OR aefo_number LIKE 'V%';

额外处理建议

如果存在aefo_number仅为'E'或'V'的情况,ltrim后会得到空字符串,此时需用NULLIF避免转换错误:

SELECT MAX(NULLIF(ltrim(aefo_number, 'VE'), '')::numeric)
FROM exemption
WHERE aefo_number LIKE 'E%'
   OR aefo_number LIKE 'V%';

内容的提问来源于stack exchange,提问作者Harish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:40:29