database compatibility assessment

ORACLE LPAD / RPAD 函数(NULL 与多字节行为) 迁移 opengauss 6.0 A 模式 怎么改

迁衡基于规则 ora.func.pad 分析 ORACLE LPAD / RPAD 函数(NULL 与多字节行为) 到 opengauss 6.0 A 模式 的兼容性、改写路径与验证建议。

兼容性判定

真机验证:opengauss 6.0.5 · 实测2026-07-09(og6.0.5): ASCII LPAD/RPAD 与空 pad 串返回 NULL 等价;库编码 SQL_ASCII,无法验证 CJK 显示宽度计长,保留 partial
支持度partial
严重度minor
置信度medium
依据规则ora.func.pad

怎么改

需按命中位置逐条评估改写

判定说明

实测2026-07-09(og6.0.5): ASCII LPAD/RPAD 与空 pad 串返回 NULL 等价;库编码 SQL_ASCII,无法验证 CJK 显示宽度计长,保留 partial

库侧 / 应用侧路径

库侧改造

需人工确认改造边界

应用侧改造

需人工确认改造边界

推荐路线:case_by_case。验证建议:函数本身普遍存在;差异在 Oracle 按显示宽度计长(多字节字符占 2)且 pad 串为空串时返回 NULL——多字节定宽报表输出必测

规则样例

SELECT LPAD(code, 8, '0') FROM t
SELECT RPAD(name, 20) FROM emp
SELECT TRIM(name) FROM emp

参考来源