oracle中,如何批量替换某字段的部分值,该字段其他部分保持不变?

例如 字段field 值 记录有 A001,A0002,B003,B004,将该字段首字母替换为P,执行结果为P001,P0002,P003,P004

1、创建测试表;

create table test_str_replace(id varchar2(20),value varchar2(20));


2、插入测试数据;

insert into test_str_replace values('1','abcbcade');

insert into test_str_replace values('2','aaabcbca');

insert into test_str_replace values('3','aabcaabcab');

commit;

3、查询表中全量数据;select t.*, rowid from test_str_replace t;

4、编写语句,将value字段中'abc'替换成'123',其他保持不变;

   select t.*, regexp_replace(value,'abc','123') cnt from test_str_replace t ;

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-26
废话少说,直接上菜!
update TABLE_NAME set field =REPLACE(field ,substr(field ,0,1) ,'P') where field is not null ;

参考资料:感谢kuaikelong,感谢军军,感谢LDC。感谢自己!

本回答被提问者和网友采纳
第2个回答  2011-08-11
update table set 字段名= REPLACE(字段名,substr(字段名,0,1) ,'要替换成的内容');
substr(字段名,0,1)--0,1为要替换的字段部分的起始位置。