项目场景:
Oracle数据库变更为Postgre substr函数调用
问题描述
substr参数为负数时结果不一致
oracle: SELECT SUBSTR('123456789', -3, 3) FROM DUAL 结果为789
postgre: SELECT SUBSTR('123456789', -3, 3) 结果为空
原因分析:
截取方式不同,Oracle负数是从右开始计算下标,Postgre负数依旧是从左开始计算下标
解决方案:
提示:SELECT SUBSTR('123456789', LENGTH('123456789') - 2, 3)
通过长度计算获取开始截取的下标