oracle字符串替换问题

需求描述:
将字符串中包含的" ","("," ("三种全部替换为"_"。比如有字符串“kdfd (dd c fg”,希望能被替换为"kdfd_dd_c_fg"

java代码可以实现:_head0 = head0.replaceAll("[ (]+", "")
但是不知道oracle如何实现

head0 = head0.replaceAll("[ (]+", "")

下划线居然显示不了,真挫,CSDN版面居然改成这鬼样了

replace(a,‘b’ , 0) 的意思是将a中的字符b用0代替。所以replace(a,substr(a,5,1),0) 得意思是将a中所有的1(substr(a,5,1)的返回值)用0代替。如果需求很简单的话,可以使用楼上的那个写法,即:将 a 中前四个字符取出 || ‘0’ || a中第六个以后的字符

update tab1 set name=replace(name,'abc','d')
where name like 'abc%'

select replace(replace('kdfd (dd c fg',' ','_'),'(','_') from dual
有多少个条件就用多少个replace替代即可

突然发现有一个函数更简单明了,那就是regexp_replace('源数据','正则表达式','要替换的内容')
select regexp_replace('kdfd (dd c fg','[()\ ]','_')from dual