Ответы:
Вы хотите использовать функцию замены в postgresql :
replace(string text, from text, to text)
например :
UPDATE <table> SET <field> = replace(<field>, 'cat', 'dog')
Имейте в виду, однако, что это будет замена строки на строку, поэтому «категория» станет «dogegory». функция regexp_replace может помочь вам определить шаблон более строгого соответствия для того, что вы хотите заменить.
regexp_replace
Если вам нужно более строгое сопоставление замен, regexp_replace
функция PostgreSQL может сопоставляться с использованием шаблонов регулярных выражений POSIX. Он имеет синтаксис regexp_replace (источник, шаблон, замена [, флаги]) .
Я буду использовать флаги i
и g
для нечувствительного к регистру и глобального соответствия, соответственно. Я также буду использовать \m
и \M
для соответствия начала и конца слова соответственно.
Обычно при замене регулярных выражений существует довольно много ошибок. Посмотрим, как легко заменить кошку на собаку .
SELECT regexp_replace('Cat bobcat cat cats catfish', 'cat', 'dog');
--> Cat bobdog cat cats catfish
SELECT regexp_replace('Cat bobcat cat cats catfish', 'cat', 'dog', 'i');
--> dog bobcat cat cats catfish
SELECT regexp_replace('Cat bobcat cat cats catfish', 'cat', 'dog', 'g');
--> Cat bobdog dog dogs dogfish
SELECT regexp_replace('Cat bobcat cat cats catfish', 'cat', 'dog', 'gi');
--> dog bobdog dog dogs dogfish
SELECT regexp_replace('Cat bobcat cat cats catfish', '\mcat', 'dog', 'gi');
--> dog bobcat dog dogs dogfish
SELECT regexp_replace('Cat bobcat cat cats catfish', 'cat\M', 'dog', 'gi');
--> dog bobdog dog cats catfish
SELECT regexp_replace('Cat bobcat cat cats catfish', '\mcat\M', 'dog', 'gi');
--> dog bobcat dog cats catfish
SELECT regexp_replace('Cat bobcat cat cats catfish', '\mcat(s?)\M', 'dog\1', 'gi');
--> dog bobcat dog dogs catfish
Даже после всего этого есть, по крайней мере, одно нерешенное условие. Например, предложения, начинающиеся с «Cat», будут заменены строчными «dog», которые разбивают заглавные буквы предложений.
Посмотрите текущую документацию соответствия шаблонов PostgreSQL для всех деталей.
Учитывая мои примеры, возможно, самый безопасный вариант будет:
UPDATE table SET field = regexp_replace(field, '\mcat\M', 'dog', 'gi');
Вы можете использовать replace
функцию
UPDATE your_table SET field = REPLACE(your_field, 'cat','dog')
Определение функции следующее (получено отсюда ):
replace(string text, from text, to text)
и возвращает измененный текст. Вы также можете проверить эту скрипку sql .
Вот пример, который заменяет все вхождения 1 или более символов пробела в столбце подчеркиванием, используя регулярное выражение -
select distinct on (pd)
regexp_replace(rndc.pd, '\\s+', '_','g') as pd
from rndc14_ndc_mstr rndc;