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