replace的使用

lanita 2012-03-24 08:46:14
表一:conv_line
conv_line_oid error_msg
1001 client %s1 not facility %s2
1002 client %s1 not facility %s2

表二
facility_group
facility_group_oid client facility conv_line_oid
2001 clientA facilityA 1001
2002 clientB facilityB 1002


要把
conv_line_oid error_msg
1001 client %s1 not facility %s2
1002 client %s1 not facility %s2

更新为
conv_line_oid error_msg
1001 client clientA not facility facilityA
1002 client clientB not facility facilityB


有何实现办法吗?
...全文
112 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
coolkisses 2012-03-26
  • 打赏
  • 举报
回复
update + select ,这倒不是什么问题。
建议再看一下这两张表,是否存在 一对多的关系,否则,需要微调一下SQL。
lanita 2012-03-26
  • 打赏
  • 举报
回复
嗯,所以现在只能先select replace后再update了。。。
lanita 2012-03-24
  • 打赏
  • 举报
回复
啊,原来可以这样,用REGEXP_REPLACE 可能会更方便呢。。
  • 打赏
  • 举报
回复

go
create table conv_line(
conv_line_oid varchar(4),
error_msg varchar(50)
)
go
insert conv_line
select '1001','client %s1 not facility %s2' union all
select '1002','client %s1 not facility %s2'

go
create table facility_group(
facility_group_oid varchar(4),
client varchar(10),
facility varchar(10),
conv_line_oid varchar(4)
)
go
insert facility_group
select '2001','clientA','facilityA','1001' union all
select '2002','clientB','facilityB','1002'


update conv_line
set error_msg=replace(REPLACE(error_msg,'%s1',client),'%s2',facility)
from facility_group a where a.conv_line_oid=conv_line.conv_line_oid

select * from conv_line

/*
conv_line_oid error_msg
1001 client clientA not facility facilityA
1002 client clientB not facility facilityB
*/

MSSQL语法,楼主修改数据类型即可
youshang444 2012-03-24
  • 打赏
  • 举报
回复
SELECT A.CONV_LINE_OID,
REPLACE(REPLACE(A.ERROR_MSG, '%s1', B.CLIENT), '%s2', B.fACILITY)
FROM CONV_LINE A, FACILITY_GROUP B
WHERE A.CONV_LINE_OID = B.CONV_LINE_OID;
lanita 2012-03-24
  • 打赏
  • 举报
回复
麻烦各位高手啦,谢谢
lxyzxq2008 2012-03-24
  • 打赏
  • 举报
回复
楼主的不仅仅是replace问题,还有update from的问题,
在oracle中没有update from,这个语法是sql server的,
虽然可以通过子查询的方式来实现update from的功能:
但是如果把replace也加进去,好像就有问题了,也就是说replace中不能写select语句吧

17,086

社区成员

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

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