PostgreSQL Ersetzen von Zeichenketten
-
Strings ersetzen mit der
replace()
-Funktion in PostgreSQL -
Ersetzen von Zeichenketten mit der Funktion
regexp_replace()
in PostgreSQL -
Weitere PostgreSQL
replace()
Funktionsbeispiele
In diesem Tutorial wird erläutert, wie Zeichenfolgen mit der PostgreSQL-Funktion replace()
ersetzt werden.
Strings ersetzen mit der replace()
-Funktion in PostgreSQL
Die PostgreSQL-Funktion replace()
hat die folgenden Parameter, die alle vom Typ Text sind:
replace (string text, from text, to text)
Der Parameter string
ist der Quelltext, auf dem die Funktion replace()
ausgeführt wird. Der from
-Parameter ist ein Teilstring des string
-Arguments und stellt den zu ändernden Teil dar.
Der to
-Parameter stellt den Teilstring des string
-Arguments dar, in den das from
-Argument geändert werden soll.
Ändern wir zum Beispiel das Wort Catfish
in Turtle
mit der Funktion replace()
, wie hier gezeigt:
SELECT replace ('Catfish', 'Catfish', 'Turtle');
Das Ergebnis ist:
replace
---------
Turtle
Ersetzen wir den Teilstring Cat
in Catfish
durch Jelly
, wie hier gezeigt:
SELECT replace('Catfish', 'Cat', 'Jelly');
Das Ergebnis ist:
replace
-----------
Jellyfish
Diese Funktion kann auch verwendet werden, um Sonderzeichen in einer Zeichenfolge zu ersetzen. Ersetzen Sie beispielsweise ein Leerzeichen durch ein Komma, wie hier gezeigt:
SELECT replace('A B C D E', ' ', ',');
Das Ergebnis ist:
replace
-----------
A,B,C,D,E
Nehmen wir an, wir haben einen Text mit zufälligen Zeichen und möchten jedes Vorkommen des Zeichens a
durch b
ersetzen, unabhängig davon, ob das Zeichen a
in Groß- oder Kleinbuchstaben geschrieben ist. Wenn wir diesen Befehl ausführen, wie hier gezeigt:
SELECT replace('agAdavA', 'a', 'b');
Das Ergebnis ist:
replace
---------
bgAdbvA
Das oben gezeigte Ergebnis erfüllt nicht die Anforderung, alle Vorkommen sowohl des großen als auch des kleinen a
durch b
zu ersetzen, da nur die Vorkommen des kleinen a
ersetzt wurden. Daher müssten wir die PostgreSQL-Funktion regexp_replace()
einführen.
Ersetzen von Zeichenketten mit der Funktion regexp_replace()
in PostgreSQL
Die PostgreSQL-Funktion regexp_replace()
hat die folgenden Parameter, die alle vom Typ Text sind:
regexp_replace (string text, pattern text, replacement text [,flags text])
Das Argument string
ist der Quellstring, für den die Ersetzungsfunktion ausgeführt wird. Der Parameter pattern
stellt den regulären Ausdruck dar, für den eine Übereinstimmung vorliegen muss, bevor ein Teilstring des String-Arguments ersetzt werden kann.
Der Parameter replacement
stellt den Text dar, in den wir den Teilstring des String-Arguments ändern. Der Parameter flags
stellt den Text dar, mit dem das Verhalten der Funktion regexp_replace()
geändert werden kann.
Im vorherigen Beispiel, wo wir alle Groß- und Kleinbuchstaben von a
in b
ändern mussten, können wir die Funktion regexp_replace()
verwenden, wie hier gezeigt:
SELECT regexp_replace('agAdavA', '[a | A]+', 'b', 'g');
Das Ergebnis ist:
regexp_replace
----------------
bgbdbvb
Mit der Einführung des regulären Ausdrucks wurden alle Vorkommen von Gross- und Kleinbuchstaben a
bedarfsgerecht ersetzt. Das g
-Flag stellt sicher, dass alle Vorkommen und nicht nur das erste Vorkommen von a
ersetzt werden.
Hier ist die PostgreSQL-Dokumentation zu Musterabgleich.
Weitere PostgreSQL replace()
Funktionsbeispiele
Nehmen wir an, wir haben eine Tabelle mit einer Spalte namens text
, die aus einzelnen Wörtern besteht, wie hier gezeigt:
id | text |
---|---|
1 | Red |
2 | Green |
3 | Blue |
4 | Red |
5 | Red |
Und wir wollen jedes Vorkommen des Wortes Red
durch Yellow
ersetzen. Wir können die Funktion replace()
verwenden, wie hier gezeigt:
UPDATE demo SET text = replace(text, 'Red', 'Yellow');
Das Ergebnis ist:
id | text
----+--------
1 | Yellow
2 | Green
3 | Blue
4 | Yellow
5 | Yellow
Nehmen wir an, in derselben Tabelle haben wir Wörter mit Sonderzeichen im Feld text
, wie hier gezeigt:
id | text |
---|---|
6 | g-r-e-e-n |
7 | 1-23–4 |
8 | one-and-two |
9 | —n—2— |
10 | —– |
Und wir wollen alle Vorkommen des Bindestrichs (-
) durch Unterstriche (_
) ersetzen. Die Funktion replace()
kann das, wie hier gezeigt, erreichen:
UPDATE demo SET text = replace(text, '-', '_');
Das Ergebnis ist:
id | text
----+-------------
6 | g_r_e_e_n
7 | 1_23__4
8 | one_and_two
9 | ___n___2___
10 | _____
Wenn wir mehr Datensätze in die Tabelle einfügen, sodass das Feld text
Sätze anstelle eines einzelnen Wortes enthält, wie hier gezeigt:
id | text |
---|---|
11 | She bought a red bag |
12 | Green is a good color |
13 | The sky is blue |
14 | The color of the shirt is red |
15 | They plan to go with blue or red balloons |
Und wir wollen das Wort rot
durch gelb
ersetzen. Dies kann mit der Funktion replace()
erreicht werden, wie hier gezeigt:
UPDATE demo SET text = replace(text, 'red', 'yellow');
Das Ergebnis ist:
id | text
----+----------------------------------------------
11 | She bought a yellow bag
12 | Green is a good color
13 | The sky is blue
14 | The color of the shirt is yellow
15 | They plan to go with blue or yellow balloons
Um mitzumachen, hier sind die auszuführenden Befehle:
--CREATE statement
CREATE TABLE demo (
id INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
text TEXT NOT NULL
);
--insert first set of records
INSERT INTO demo (text)
VALUES
('Red'),
('Green'),
('Blue'),
('Red'),
('Red');
--insert second set of records
INSERT INTO demo (text)
VALUES
('g-r-e-e-n'),
('1-23--4'),
('one-and-two'),
('---n---2---'),
('-----');
--insert third and final set of records
INSERT INTO demo (text)
VALUES
('She bought a red bag'),
('Green is a good color'),
('The sky is blue'),
('The color of the shirt is red'),
('They plan to go with blue or red balloons');
--update statements that include the REPLACE function
UPDATE demo SET text = replace(text, 'Red', 'Yellow');
UPDATE demo SET text = replace(text, '-', '_');
UPDATE demo SET text = replace(text, 'red', 'yellow');
--view all the changes
SELECT * FROM demo;
In diesem Tutorial haben wir besprochen, wie man Strings mit den PostgreSQL-Funktionen replace()
und regexp_replace
ersetzt und wie die Funktion replace()
verwendet werden kann, um Strings in einer Tabelle zu aktualisieren.