如何在Oracle 11g中更新具有不同值的列?

时间:2014-10-14 05:37:46

标签: sql oracle oracle11g

我有一个名为“User_Report”的表,其中包含这些列。

ID       Name    City    zip    Report_File
101      AAA     PPP     123     -----
102      BBB     QQQ     345     -----
103      CCC     RRR     567     -----
104      FFF     SSS     789     -----

我添加了Report_File新列,我需要使用Name +“。rpt”更新此列。 如何在单个更新语句中使用corressponding Name列数据更新Report_File列?

请给我举个例子?

提前致谢。

2 个答案:

答案 0 :(得分:1)

请尝试以下查询。在oracle中,双管道(||)用于连接字符串:

Update User_Report
SET Report_File=Name||'.rpt';

可以使用OR关键字CONCAT。请参阅LINK

Update User_Report
SET Report_File=CONCACT(Name, '.rpt')

答案 1 :(得分:0)

您的report_file列似乎是一个计算值,如果它永远不会偏离,那么您可能会考虑一个虚拟列。

alter table user_report add (report_file varchar(40) as (name||'.rpt'));

这样您就不必担心保持同步状态,如果更改名称或插入新值,它将始终保持同步。