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

G66606495 2007-01-18 05:34:06
通改改表中字段内容,保存为原内容的后5位,不够5位的就不作处理
例如数据:asdfghj 修改为 dfghj
...全文
184 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
icedut 2007-01-19
  • 打赏
  • 举报
回复
通改改表中字段内容,保存为原内容的后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
tgm78 2007-01-19
  • 打赏
  • 举报
回复
SQL> select substr('asdfdfafda',-5,5) from dual;

SUBSTR('ASDFDFAFDA',-5,5)
-------------------------
fafda
G66606495 2007-01-19
  • 打赏
  • 举报
回复
ERROR 位于第 1 行:
ORA-01427: 单行子查询返回多于一个行
intotheheart 2007-01-19
  • 打赏
  • 举报
回复
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)
intotheheart 2007-01-19
  • 打赏
  • 举报
回复
substr('12345',-1)执行后结果为5,意思为取倒数第一位,你的substr(CPH,10,-5)不对。
select case when length(CPH)>5 then substr(CPH,-5)
else CPH end from dual
G66606495 2007-01-19
  • 打赏
  • 举报
回复
知道用用substr()函数,但不知道整句SQL怎么写
Update CCIC_LOSTcaR set CPH= trim(substr(CPH,10,-5)怎么不对
fenglifen008 2007-01-18
  • 打赏
  • 举报
回复
用substr()函数
G66606495 2007-01-18
  • 打赏
  • 举报
回复
yun

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧