当前位置: 代码迷 >> Oracle管理 >> 通改改表中字段内容,保存为原内容的后5位,不够5位的就不作处理解决思路
  详细解决方案

通改改表中字段内容,保存为原内容的后5位,不够5位的就不作处理解决思路

热度:59   发布时间:2016-04-24 06:14:58.0
通改改表中字段内容,保存为原内容的后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)
  相关解决方案