我要保存更新请求。因此,不要这样做:
update table set column = REPLACE(column,'abc','xyz');
update table set column = REPLACE(column,'def','uvw');
...
我想做这样的事情:
UPDATE table
SET column =
CASE
WHEN column like '%"abc":%' THEN REPLACE(column,'"abc":','"xyz":')
WHEN column like '%"def":%' THEN REPLACE(column,'"def":','"uvw":')
...
END
WHERE COLUMN2 = 'something';
但是,这并没有实现我需要的那种循环。它只会替换找到的第一个匹配项。
我知道我也可以这样做:
update table
set column = REPLACE(REPLACE(column,'abc','xyz'),'def','uvw')
where COLUMN = 'something';
但是我不知道它们各自的性能。
答案 0 :(得分:0)
您可以为嵌套替换尝试不同的格式:
update table
set column = REPLACE(
REPLACE(
REPLACE(
REPLACE(column, 'abc','xyz'),
'def','uvw'),
'zxc','acv'),
'xcv','bvn')
where COLUMN = 'something';