上面的回答都是对的,还是多说一句,如果你只是想改最后一个字符(xx这两个字符中也含有“变”不需要改):
创新互联公司是一家集网站建设,江干企业网站建设,江干品牌网站建设,网站定制,江干网站建设报价,网络营销,网络优化,江干网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
udpate
test
set
name
=
substr(name
,1,length(name
)
-
1)
||
'站';
commit;
若确认xx两个字符不含“变”,或者含的话也要改掉,那么:
update
test
set
name
=
replace(name,'变','站');commit;
可以通过replace函数来获取特定字符串后,进行字段更新实现:
sql:update tablename set name=replace(name,'替换前字段','替换后字段') where name like '%替换前字段%'。
上面的sql语句的意思是替换tablename中name字段的“替换前字段“为”替换后字段“, where后面的语句是筛选出字段中带有”替换前字段“的name值。
看你的意思应该是一个表的数据替换另一个表的相关数据吧,那就用merge语句就可以。
update也可以。
所谓替换应该就是修改,如果相关内容太多,那就分次分批进行修改就好了。
create or replace procedure string_modify(v_str in varchar2) as
v_num number;
temp_str varchar2(200);
v_num2 number;
temp_str2 varchar2(200);
v_begin number;
v_end number;
v_diff number;
v_b_str varchar2(20);
v_e_str varchar2(20);
v_f_str varchar2(20);
begin
v_num:=instr(v_str,'}',1,1);
temp_str2:=v_str;
while v_num 0 loop
v_num2:=v_num + 1;
TEMP_STR:=substr(temp_str2,1,v_num);
/* 处理字符的位置
*/
v_begin:=instr(temp_str,'"',1,3);
v_end:=instr(temp_str,'"',1,4);
v_diff:=v_end - v_begin - 1;
v_begin:=v_begin + 1;
v_b_str:=substr(temp_str,v_begin,v_diff);
v_begin:=instr(temp_str,'"',1,7);
v_end:=instr(temp_str,'"',1,8);
v_diff:=v_end - v_begin - 1;
v_begin:=v_begin + 1;
v_e_str:=substr(temp_str,v_begin,v_diff);
v_f_str:=CONCAT(v_b_str,':');
v_f_str:=concat(v_f_str,v_e_str);
dbms_output.put_line(v_f_str);
temp_str2:=substr(temp_str2,v_num2);
v_num:=instr(temp_str2,'}',1,1);
end loop;
end;
/
exec string_modify('[{"k":"key1","v":"value1"},{"k":"key2","v":"value2"}]');