oracle中怎么替换字符串中指定位置的字符?比如a字段值为1001100,我想把第五位的1 更换成0

Major_ZYH 2016-05-30 12:40:38
oracle中怎么替换字符串中指定位置的字符?比如字段a的值为1001100,我想把第五位的1 更换成0 ,replace函数操作的话
是这样的
update 表名 set a=replace(a,substr(a,5,1),0) where id=1;

类似这样则会将所有的1 都替换成0,有没有办法只替换第五位的数字1呢?
...全文
13229 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 2016-05-30
  • 打赏
  • 举报
回复

-- 试试这个 

select regexp_replace('1001101010','(.)','0',5,1) from dual 
ghx287524027 2016-05-30
  • 打赏
  • 举报
回复
replace(a,‘b’ , 0) 的意思是将a中的字符b用0代替。所以replace(a,substr(a,5,1),0) 得意思是将a中所有的1(substr(a,5,1)的返回值)用0代替。如果需求很简单的话,可以使用楼上的那个写法,即:将 a 中前四个字符取出 || ‘0’ || a中第六个以后的字符
Z_B_Hrunqian 2016-05-30
  • 打赏
  • 举报
回复
update 表名 set a=substr(a,1,4)|| '0'||substr(s,6) where id=1;

17,132

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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