我有2个表,并想用其他列值中的值替换列值。我想在REPLACE
语句中使用Begin..End
函数。任何帮助表示赞赏。谢谢
Declare
l_id Varchar2(20);
l_name Varchar2(20);
l2_name Varchar2(20);
Begin
Select t1.id,t1.name, t2.name
into l_id,l_name,l2_name
From t t1 join ta2 t2
on t1.id = t2.id ;
Select Replace(Replace(t2.name,'Name', t1.name), 'Id', t1.id);
End
答案 0 :(得分:0)
不需要使用PL/SQL
块,但是可以通过单个update
语句来管理它:
update table1 t
set details = (
with cte as (
select *
from table2
)
select replace(replace(t.details,'Name',cte.name),'Id',cte.ID)
from cte
where cte.DOB = t.DOB
);
答案 1 :(得分:0)
您可以使用以下表达式发出select
:
select t1.id, t1.name, replace(replace(t1.details, 'Name', t2.name), 'Id', t2.id)
into l_id, l_name, l2_name
from t t1 join
ta2 t2
on t1.id = t2.id ;
注意:查询将返回其生成的尽可能多的行,这可能会导致错误。您的查询不清楚您真正想做什么。
如果您想要update
,也许您只是想在其中一个表中重设名称:
update t1
set name = (select t2.name from ta2 where t2.id = ta.id)
where exists (select 1 from ta2 where t2.id = ta.id);