Jak w Postgresql mogę zastąpić wszystkie wystąpienia ciągu w kolumnie bazy danych?
Że chcę zastąpić wszystkie wystąpienia cat
z dog
, na przykład.
Jak najlepiej to zrobić?
postgresql
replace
znak
źródło
źródło
Odpowiedzi:
Chcesz użyć funkcji zamiany postgresql :
na przykład :
Pamiętaj jednak, że będzie to zamiana strun na struny, więc „kategoria” stanie się „dogegory”. funkcja regexp_replace może pomóc ci zdefiniować bardziej rygorystyczny wzór dopasowania dla tego, co chcesz zastąpić.
źródło
regexp_replace
Sposób wyrażania regularnego
Jeśli potrzebujesz ściślejszego dopasowania zamiennego,
regexp_replace
funkcja PostgreSQL może się zgadzać przy użyciu wzorców wyrażeń regularnych POSIX. Ma składnię regexp_replace (źródło, wzorzec, zamiana [, flagi]) .Będę używać flag
i
i odpowiedniog
do rozróżniania wielkości liter i dopasowania globalnego. Użyję również\m
i\M
dopasować odpowiednio początek i koniec słowa.Podczas wymiany wyrażeń regularnych zwykle występuje sporo błędów. Zobaczmy, jak łatwo jest zamienić kota z psem .
Nawet po tym wszystkim istnieje co najmniej jeden nierozwiązany warunek. Na przykład zdania zaczynające się od „Kot” zostaną zastąpione małymi literami „pies”, co łamie wielkie litery zdań.
Sprawdź aktualne dokumenty dopasowujące wzorzec PostgreSQL dla wszystkich szczegółów.
Zaktualizuj całą kolumnę o tekst zastępczy
Biorąc pod uwagę moje przykłady, być może najbezpieczniejszą opcją byłoby:
źródło
Możesz użyć tej
replace
funkcjiDefinicja funkcji jest następująca (pochodzi stąd ):
i zwraca zmodyfikowany tekst. Możesz również sprawdzić to skrzypce sql .
źródło
Oto przykład, który zastępuje wszystkie wystąpienia 1 lub więcej białych znaków w kolumnie znakiem podkreślenia przy użyciu wyrażenia regularnego -
źródło