想实现Oracle从右侧开始往左侧截取
例:原始数据:00D51E31
从右侧第三位E开始截取,从右侧往左侧数,一直截取到左侧第一位字符串
截取后显示结果:00D51E
使用SUBSTR(00D51E31,-3,5) 函数,截取结果显示E31,不是想要的结果。
原始数据字符串长度不一致,请问如何实现?
substr的第三个参数都是从第二个参数的位置从左往右数,因此你这个需求应该进行转化,截取的逻辑应该为从左起第一位,截到倒数第3位,即字符串总长度减2的长度
substr('00D51E31',1,length('00D51E31')-2)
Oracle 截取字符串
测试了,貌似都是往右边截取。 正负只是从左还是右开始算开始位置而已
需要根据你的要求用instr 算开始位置。
改下写法 ,
-- 右侧3开始
select SUBSTR('00D51E31',0,length('00D51E31')-3) From dual;
-- 右侧5开始
select SUBSTR('00D51E31',0,length('00D51E31')-5) From dual;