В postgresql как заменить все вхождения строки в столбце базы данных?
Скажем , я хочу , чтобы заменить все экземпляры cat
с dog
, например.
Какой лучший способ сделать это?
postgresql
replace
отметка
источник
источник
Ответы:
Вы хотите использовать функцию замены в postgresql :
например :
Имейте в виду, однако, что это будет замена строки на строку, поэтому «категория» станет «dogegory». функция regexp_replace может помочь вам определить шаблон более строгого соответствия для того, что вы хотите заменить.
источник
regexp_replace
Путь регулярного выражения
Если вам нужно более строгое сопоставление замен,
regexp_replace
функция PostgreSQL может сопоставляться с использованием шаблонов регулярных выражений POSIX. Он имеет синтаксис regexp_replace (источник, шаблон, замена [, флаги]) .Я буду использовать флаги
i
иg
для нечувствительного к регистру и глобального соответствия, соответственно. Я также буду использовать\m
и\M
для соответствия начала и конца слова соответственно.Обычно при замене регулярных выражений существует довольно много ошибок. Посмотрим, как легко заменить кошку на собаку .
Даже после всего этого есть, по крайней мере, одно нерешенное условие. Например, предложения, начинающиеся с «Cat», будут заменены строчными «dog», которые разбивают заглавные буквы предложений.
Посмотрите текущую документацию соответствия шаблонов PostgreSQL для всех деталей.
Обновить весь столбец с текстом замены
Учитывая мои примеры, возможно, самый безопасный вариант будет:
источник
Вы можете использовать
replace
функциюОпределение функции следующее (получено отсюда ):
и возвращает измененный текст. Вы также можете проверить эту скрипку sql .
источник
Вот пример, который заменяет все вхождения 1 или более символов пробела в столбце подчеркиванием, используя регулярное выражение -
источник