postgresql переименовывает несколько подстрок в строку json одним запросом - PullRequest
0 голосов
/ 07 декабря 2018

Я хочу сохранить запросы на обновление.Поэтому вместо этого:

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';

Но я не знаю о производительности каждого из них.

1 Ответ

0 голосов
/ 07 декабря 2018

Вы можете попробовать другое форматирование для вложенных замен:

update table
set column =    REPLACE(
                REPLACE(
                REPLACE(
                REPLACE(column, 'abc','xyz'),
                                'def','uvw'),
                                'zxc','acv'),
                                'xcv','bvn')
where COLUMN = 'something';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...