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

Sådan fungerer REPLACE() i MariaDB

I MariaDB, REPLACE() er en indbygget strengfunktion, der giver dig mulighed for at erstatte en del af en streng med en anden streng.

Funktionen accepterer tre argumenter:strengen, understrengen, der skal erstattes, og strengen, der skal erstattes understrengen med.

Syntaks

Syntaksen ser sådan ud:

REPLACE(str,from_str,to_str)

Hvor str er strengen, og from_str er understrengen, der skal erstattes, og to_str er strengen, der skal erstatte den understreng med.

Eksempel

Her er et grundlæggende eksempel:

SELECT REPLACE('Black dog', 'dog', 'cat');

Resultat:

+------------------------------------+
| REPLACE('Black dog', 'dog', 'cat') |
+------------------------------------+
| Black cat                          |
+------------------------------------+

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

Flere match

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                          |
+----------------------------------------------------+

Ingen match

Hvis understrengen ikke forekommer i strengen, REPLACE() returnerer strengen uændret:

SELECT REPLACE('Black dog', 'horse', 'cat');

Resultat:

+--------------------------------------+
| REPLACE('Black dog', 'horse', 'cat') |
+--------------------------------------+
| Black dog                            |
+--------------------------------------+

Skrivar og bogstaver

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

SELECT REPLACE('Black dog', 'Dog', 'Cat');

Resultat:

+------------------------------------+
| REPLACE('Black dog', 'Dog', 'Cat') |
+------------------------------------+
| Black dog                          |
+------------------------------------+

I dette eksempel matchede sagen ikke, så intet blev erstattet.

Tomme strenge

Her er, hvad der sker, når en tom streng sendes for hvert givet argument:

SELECT 
    REPLACE('', 'dog', 'cat') AS "1",
    REPLACE('Black dog', '', 'cat') AS "2",
    REPLACE('Black dog', 'dog', '') AS "3";

Resultat:

+------+-----------+--------+
| 1    | 2         | 3      |
+------+-----------+--------+
|      | Black dog | Black  |
+------+-----------+--------+

Så i dette tilfælde:

  • Ved at sende en tom streng for den indledende streng returneres en tom streng.
  • Hvis du sender en tom streng for det andet argument, returneres den oprindelige streng.
  • Hvis du sender en tom streng for det tredje argument, fjernes den streng, der skal erstattes, fra strengen.

Mellemrumstegn

En tom streng er ikke det samme som mellemrumstegnet.

Her er, hvad der sker, når vi ændrer den tomme streng til et mellemrum:

SELECT 
    REPLACE(' ', 'dog', 'cat') AS "1",
    REPLACE('Black dog', ' ', 'cat') AS "2",
    REPLACE('Black dog', 'dog', ' ') AS "3";

Resultat:

+------+-------------+---------+
| 1    | 2           | 3       |
+------+-------------+---------+
|      | Blackcatdog | Black   |
+------+-------------+---------+

Derfor, hvis strengen ikke er andet end et mellemrum, kan vi erstatte det med en anden streng:

SELECT REPLACE(' ', ' ', 'cat');

Resultat:

+--------------------------+
| REPLACE(' ', ' ', 'cat') |
+--------------------------+
| cat                      |
+--------------------------+

Nul-argumenter

Giver null resulterer i null :

SELECT 
    REPLACE(null, 'dog', 'cat') AS "1",
    REPLACE('Black dog', null, 'cat') AS "2",
    REPLACE('Black dog', 'dog', null) AS "3";

Resultat:

+------+------+------+
| 1    | 2    | 3    |
+------+------+------+
| NULL | NULL | NULL |
+------+------+------+

Manglende argument

Kalder REPLACE() med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:

SELECT REPLACE();

Resultat:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

  1. SQL Server-deadlocks anatomi og de bedste måder at undgå dem på

  2. Hvorfor genererer EF SQL-forespørgsler med unødvendige nul-tjek?

  3. Sådan fungerer MAKEDATE() i MariaDB

  4. Sådan opsætter og logger du ind som root-bruger i MySQL