通改改表中字段内容,保存为原内容的后5位,不够5位的就不作处理
通改改表中字段内容,保存为原内容的后5位,不够5位的就不作处理
例如数据:asdfghj 修改为 dfghj
------解决方案--------------------SQL> select substr( 'asdfdfafda ',-5,5) from dual;
SUBSTR( 'ASDFDFAFDA ',-5,5)
-------------------------
fafda
------解决方案--------------------通改改表中字段内容,保存为原内容的后5位,不够5位的就不作处理
用SUBSTR +case 解决
SELECT CASE WHEN LENGTH( 'fabcde ') > 5 THEN SUBSTR( 'fabcde ',-5,5)
ELSE 'fabcde ' END FROM dual
--abcde
SELECT CASE WHEN LENGTH( 'bcde ') > 5 THEN SUBSTR( 'bcde ',-5,5)
ELSE 'bcde ' END FROM dual
--bcde
------解决方案--------------------substr( '12345 ',-1)执行后结果为5,意思为取倒数第一位,你的substr(CPH,10,-5)不对。
select case when length(CPH)> 5 then substr(CPH,-5)
else CPH end from dual
------解决方案--------------------Update CCIC_LOSTcaR a set CPH=(select case when length(CPH)> 5 then substr(CPH,-5)
else CPH end from CCIC_LOSTcaR b where a.CPH=b.CPH)