Sql 如何用其他表列值替换列值?
我有两个表,希望用其他列值中的值替换列值。我想在Begin..End语句中使用REPLACE函数。谢谢你的帮助。谢谢Sql 如何用其他表列值替换列值?,sql,oracle,replace,sql-update,Sql,Oracle,Replace,Sql Update,我有两个表,希望用其他列值中的值替换列值。我想在Begin..End语句中使用REPLACE函数。谢谢你的帮助。谢谢 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
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
不需要使用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
);
不需要使用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
);
您只需使用以下表达式发出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 t1
set name = (select t2.name from ta2 where t2.id = ta.id)
where exists (select 1 from ta2 where t2.id = ta.id);
您只需使用以下表达式发出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 t1
set name = (select t2.name from ta2 where t2.id = ta.id)
where exists (select 1 from ta2 where t2.id = ta.id);
听起来您需要UPDATE语句而不是SELECT语句。除非我错过了一些东西,请考虑学习基本的SQL。@ GNUDIFF谢谢您的评论。我正在学习SQL脚本。问题是我不想在我的表中更新它。我只想替换这些值,并将其打印出来用于测试目的,然后用于其他目的。您是否尝试过使用下面提供的包含替换函数的通用表表达式进行演示?听起来您需要的是UPDATE语句而不是SELECT。除非我错过了一些东西,请考虑学习基本的SQL。@ GNUDIFF谢谢您的评论。我正在学习SQL脚本。问题是我不想在我的表中更新它。我只想替换这些值并打印出来用于测试目的,并用于其他目的。您是否尝试过使用公共表表达式(包括下面提供的替换函数)进行演示?@user10990065。select查询似乎符合您的要求。感谢您的帮助。我不想更新结果表,我只想用其他表中的值替换列值,比如占位符。我需要像这样绕桌子一圈,但卡住了。在选择t1.id、t1.name、t2.name中从i开始,从t1中选择l_id、l_name、l2_name,在t1.id=t2.id上加入ta2 t2;循环dbms_输出。将_行'name:'|| i.l_name;dbms_output.put_line'name2:'|| i.l2_name;端环;结束;\虽然这不起作用,因为我得到了更多符合条件的常见记录。select语句非常有效。非常感谢。谢谢您的宝贵时间。@user10990065。select查询似乎符合您的要求。感谢您的帮助。我不想更新结果表,我只想用其他表中的值替换列值,比如占位符。我需要像这样绕桌子一圈,但卡住了。在选择t1.id、t1.name、t2.name中从i开始,从t1中选择l_id、l_name、l2_name,在t1.id=t2.id上加入ta2 t2;循环dbms_输出。将_行'name:'|| i.l_name;dbms_output.put_line'name2:'|| i.l2_name;端环;结束;\虽然这不起作用,因为我得到了更多符合条件的常见记录。select语句非常有效。非常感谢。谢谢你宝贵的时间。