此问题在此处已有答案:
How to handle a single quote in Oracle SQL(2个答案)
Concat function is not working - invalid number of arguments(4个答案)
17天前关闭。
我有一个名为EMPLOYEE的表,ID列作为Oracle数据库中的主键
ID FIRST_NAME LAST_NAME
1 ABC DEF
2 IJK LMN
3 OPQ RST
4 UVW XYZ
5 GBC GEF
6 IBC JEF
7 KBC LEF
8 MBC NEF`
字符串
现在我运行一个带有过滤器的SELECT语句,如-
SELECT FIRST_NAME, LAST_NAME FROM EMPLOYEE WHERE ID >3;
型
输出量:
FIRST_NAME LAST_NAME
UVW XYZ
GBC GEF
IBC JEF
KBC LEF
MBC NEF
型
我正在尝试基于上面的SELECT语句构建UPDATE语句。例如,我正在尝试生成如下所示的UPDATE语句,以便我可以在另一个数据库上运行(而不是使用Datapump)。
UPDATE EMPLOYEE SET FIRST_NAME=‘UVW’, LAST_NAME=‘XYZ’ WHERE ID=4;
UPDATE EMPLOYEE SET FIRST_NAME=‘GBC’, LAST_NAME=‘GEF’ WHERE ID=5;
UPDATE EMPLOYEE SET FIRST_NAME=‘IBC’, LAST_NAME=‘JEF’ WHERE ID=6;
UPDATE EMPLOYEE SET FIRST_NAME=‘KBC’, LAST_NAME=‘LEF’ WHERE ID=7;
UPDATE EMPLOYEE SET FIRST_NAME=‘MBC’, LAST_NAME=‘NEF’ WHERE ID=8;
型
我试过使用连接操作符,但没有成功。你能建议什么是正确的方法来生成上述UPDATE语句的相应ID列值的基础上的过滤条件(在这种情况下ID>3)
感谢你的帮助。
我试过这样的方法
SELECT CONCAT(
(SELECT 'UPDATE EMPLOYEE SET FIRST_NAME=' ||FIRST_NAME FROM EMPLOYEE WHERE ID>3),
', ',
(SELECT ', LAST_NAME=' ||LAST_NAME FROM EMPLOYEE WHERE ID>3),
', ',
(SELECT 'WHERE ID=' ||ID FROM EMPLOYEE WHERE ID>3)
) AS concatenated_output;
型
1条答案
按热度按时间af7jpaap1#
我想你是一头扎进了某个深奥的代码里,《盗梦空间》。
相反,将每个返回的记录视为自己的UPDATE语句字符串可能会有所帮助:
字符串
为了说明,双单引号只是在字符串中使用时表示一个单引号。例如:
SELECT ''''
,如果你单独运行它,将返回'
。这应该为每个UPDATE语句生成一行,您可以将其复制/粘贴到其他系统中。这不是最有效的ETL,但对于小数据,它可以完成这项工作。