MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

2 Möglichkeiten, einen Teilstring in MariaDB zu ersetzen

Wenn Sie einen Teilstring in MariaDB durch einen anderen String ersetzen müssen, können Sie die folgenden zwei Ansätze verwenden.

Der REPLACE() Funktion

In MariaDB ist das REPLACE() Die Funktion wurde speziell entwickelt, um einen Teilstring innerhalb eines anderen Strings zu ersetzen.

Beim Aufruf der Funktion geben Sie drei Argumente an. Dies sind die Zeichenfolge, die Teilzeichenfolge und die Ersatzzeichenfolge.

Beispiel:

SELECT REPLACE('My dog likes to dig holes', 'dog', 'cat'); 

Ergebnis:

+---------------------------------------------- ------+| REPLACE('Mein Hund gräbt gerne Löcher', 'Hund', 'Katze') |+----------------------------------------- -----------------------+| Meine Katze gräbt gerne Löcher |+-------------------------------------------------- ----------+

In diesem Fall haben wir den Teilstring dog ersetzt mit cat .

Kommt der zu ersetzende String mehrfach innerhalb des Strings vor, werden alle Vorkommen ersetzt:

SELECT REPLACE('Black dogs and white dogs', 'dog', 'cat'); 

Ergebnis:

+---------------------------------------------- ------+| REPLACE('Schwarze Hunde und weiße Hunde', 'Hund', 'Katze') |+------------------------------ ----------------------+| Schwarze Katzen und weiße Katzen |+-------------------------------------------------- ---------+

Das REPLACE() Funktion führt eine Übereinstimmung zwischen Groß- und Kleinschreibung durch.

Siehe Wie REPLACE() Funktioniert in MariaDB für weitere Beispiele.

Der REGEXP_REPLACE() Funktion

Der REGEXP_REPLACE() Funktion ähnelt der REPLACE() -Funktion, außer dass Sie mit regulären Ausdrücken einen Musterabgleich durchführen können.

Dies macht REGEXP_REPLACE() mächtiger als REPLACE() , da Sie Teile einer Zeichenfolge abgleichen können, um Teilzeichenfolgen zu ersetzen, die nur mit REPLACE() schwieriger oder unmöglich abzugleichen wären .

Beispiel:

SELECT REGEXP_REPLACE('My cat has cuts', 'c.t', 'dog'); 

Ergebnis:

+---------------------------------------------- ---+| REGEXP_REPLACE('Meine Katze hat Schnitte', 'c.t', 'Hund') |+------------------------ --------------------+| Mein Hund hat Hunde |+------------------------------------------------------------------ -----+

Reguläre Ausdrücke können sehr leistungsfähig sein, und dieses Beispiel verwendet ein sehr einfaches Beispiel. Um REGEXP_REPLACE() zu verwenden Um effektiv zu sein, müssen Sie das richtige Muster kennen, um das gewünschte Ergebnis zu erzielen.

Es ist auch möglich, die vollständige Literalzeichenfolge als Muster bereitzustellen, genau wie Sie es mit REPLACE() verwenden würden Funktion.

Daher könnten wir das erste Beispiel auf dieser Seite so umschreiben, dass es REGEXP_REPLACE() verwendet statt REPLACE() .

Hier ist ein Beispiel, das sie nebeneinander laufen lässt, um zu veranschaulichen, was ich meine:

SELECT 
    REPLACE('My dog likes to dig holes', 'dog', 'cat') AS "REPLACE()",
    REGEXP_REPLACE('My dog likes to dig holes', 'dog', 'cat') AS "REGEXP_REPLACE()"; 

Ergebnis:

+----------------------+----------------- ---------+| ERSETZEN() | REGEXP_REPLACE() |+---------------------+---------------- ----------+| Meine Katze gräbt gerne Löcher | Meine Katze gräbt gerne Löcher |+---------------------+-------------- -------------+

Auch das REGEXP_REPLACE() Funktion folgt den Regeln der Groß-/Kleinschreibung der effektiven Sortierung. Der Abgleich wird bei Sortierungen ohne Berücksichtigung der Groß- und Kleinschreibung und bei Sortierungen mit Berücksichtigung der Groß- und Kleinschreibung und bei Binärdaten ohne Berücksichtigung der Groß-/Kleinschreibung durchgeführt. Die Unterscheidung zwischen Groß- und Kleinschreibung kann jedoch mit dem Befehl (?i ) und (?-i ) PCRE-Flags.

Siehe Wie REGEXP_REPLACE() Funktioniert in MariaDB für Beispiele der Groß- und Kleinschreibung und mehr.