在Oracle数据库列上执行多个替换操作

jdm*_*eon 2 sql string oracle performance

我目前在Oracle数据库列中有一堆字符串需要更改,现在我正在运行多个更新语句来完成此操作。

UPDATE TABLE1 SET COLUMN1 = REPLACE 
(COLUMN1, 'ABC', 'SR1')
UPDATE TABLE1 SET COLUMN1 = REPLACE  
(COLUMN1, '123', 'SR2')
UPDATE TABLE1 SET COLUMN1 = REPLACE  
(COLUMN1, 'XYZ', 'SR3')
UPDATE TABLE1 SET COLUMN1 = REPLACE    
(COLUMN1, '789', 'SR4')
Run Code Online (Sandbox Code Playgroud)

无论如何,例如,我是否一劳永逸地完成此任务

UPDATE TABLE1 
SET
COLUMN1 = REPLACE(COLUMN1, 'XYZ', 'SR3'), 
COLUMN1 = REPLACE(COLUMN1, '789', 'SR4')
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 5

您可以嵌套replace()调用:

UPDATE TABLE1
    SET COLUMN1 = REPLACE(REPLACE(REPLACE(REPLACE(COLUMN1, 'ABC', 'SR1'), '123', 'SR2'), 'XYZ', 'SR3'), '789', 'SR4');
Run Code Online (Sandbox Code Playgroud)

Oracle还提供regexp_replace()。您可能会发现一些数据转换很方便。