4 ответов:
вы хотите использовать postgresql в заменить функция:
replace(string text, from text, to text)например :
UPDATE <table> SET <field> = replace(<field>, 'cat', 'dog')
Способ Регулярного Выражения
Если вам нужно более строгое соответствие замены, Postgresql's
regexp_replaceфункция может соответствовать с помощью шаблонов регулярных выражений 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', '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;
Comments