sql >> Database teknologi >  >> RDS >> MariaDB

2 måder at erstatte en understreng i MariaDB

Hvis du har brug for at erstatte en understreng med en anden streng i MariaDB, er her to fremgangsmåder, du kan bruge.

REPLACE() Funktion

I MariaDB er REPLACE() funktion er designet specifikt til at erstatte en understreng i en anden streng.

Du angiver tre argumenter, når du kalder funktionen. Disse er strengen, understrengen og erstatningsstrengen.

Eksempel:

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

Resultat:

+----------------------------------------------------+
| REPLACE('My dog likes to dig holes', 'dog', 'cat') |
+----------------------------------------------------+
| My cat likes to dig holes                          |
+----------------------------------------------------+

I dette tilfælde erstattede vi understrengen dog med cat .

Hvis strengen, der skal erstattes, forekommer flere gange i strengen, erstattes alle forekomster:

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

Resultat:

+----------------------------------------------------+
| REPLACE('Black dogs and white dogs', 'dog', 'cat') |
+----------------------------------------------------+
| Black cats and white cats                          |
+----------------------------------------------------+

REPLACE() funktion udfører et match, der skelner mellem store og små bogstaver.

Se hvordan REPLACE() Fungerer i MariaDB for flere eksempler.

REGEXP_REPLACE() Funktion

REGEXP_REPLACE() funktionen ligner REPLACE() funktion, bortset fra at den giver dig mulighed for at lave mønstermatchning ved hjælp af regulære udtryk.

Dette gør REGEXP_REPLACE() kraftigere end REPLACE() , da du kan matche med dele af en streng for at erstatte understrenge, der ville være sværere eller umulige at matche, når du bare bruger REPLACE() .

Eksempel:

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

Resultat:

+-------------------------------------------------+
| REGEXP_REPLACE('My cat has cuts', 'c.t', 'dog') |
+-------------------------------------------------+
| My dog has dogs                                 |
+-------------------------------------------------+

Regulære udtryk kan være meget kraftfulde, og dette eksempel bruger et meget simpelt eksempel. For at bruge REGEXP_REPLACE() effektivt, skal du kende det korrekte mønster til at bruge til det ønskede resultat.

Det er også muligt at angive den fulde bogstavelige streng som mønsteret, ligesom du ville bruge med REPLACE() funktion.

Derfor kunne vi omskrive det første eksempel på denne side til at bruge REGEXP_REPLACE() i stedet for REPLACE() .

Her er et eksempel, der kører dem side om side for at illustrere, hvad jeg mener:

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()";

Resultat:

+---------------------------+---------------------------+
| REPLACE()                 | REGEXP_REPLACE()          |
+---------------------------+---------------------------+
| My cat likes to dig holes | My cat likes to dig holes |
+---------------------------+---------------------------+

Også REGEXP_REPLACE() funktionen følger reglerne for store og små bogstaver for den effektive sortering. Matching udføres ufølsomt for store og små bogstaver for store og små bogstaver for sammenstillinger, der skelner mellem store og små bogstaver, og der skelnes mellem store og små bogstaver for sammenstillinger, der skelner mellem store og små bogstaver, og for binære data. Dog kan sorteringsfølsomheden for store og små bogstaver tilsidesættes ved hjælp af (?i ) og (?-i ) PCRE-flag.

Se hvordan REGEXP_REPLACE() Arbejder i MariaDB for eksempler på case sensitivity og mere.


  1. PostgreSQL-forespørgsel til at tælle/gruppere efter dag og vise dage uden data

  2. Er det muligt for SQL Output-sætning at returnere en kolonne, der ikke er indsat?

  3. Oracle FOR LOOP SELECT-erklæringseksempel

  4. Oracle PL/SQL-strengsammenligningsproblem