日期:2014-05-17  浏览次数:20953 次

通改改表中字段内容,保存为原内容的后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)