I MariaDB, REPLACE()
är en inbyggd strängfunktion som låter dig ersätta en del av en sträng med en annan sträng.
Funktionen accepterar tre argument:strängen, delsträngen som ska ersättas och strängen att ersätta delsträngen med.
Syntax
Syntaxen ser ut så här:
REPLACE(str,from_str,to_str)
Där str
är strängen och from_str
är delsträngen som ska ersättas och to_str
är strängen att ersätta den delsträngen med.
Exempel
Här är ett grundläggande exempel:
SELECT REPLACE('Black dog', 'dog', 'cat');
Resultat:
+------------------------------------+ | REPLACE('Black dog', 'dog', 'cat') | +------------------------------------+ | Black cat | +------------------------------------+
I det här fallet ersatte vi delsträngen dog
med cat
.
Flera matchningar
Om strängen som ska ersättas förekommer flera gånger i strängen, ersätts alla förekomster:
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
Om delsträngen inte förekommer i strängen, REPLACE()
returnerar strängen oförändrad:
SELECT REPLACE('Black dog', 'horse', 'cat');
Resultat:
+--------------------------------------+ | REPLACE('Black dog', 'horse', 'cat') | +--------------------------------------+ | Black dog | +--------------------------------------+
Skaftkänslighet
REPLACE()
funktion utför en skiftlägeskänslig matchning:
SELECT REPLACE('Black dog', 'Dog', 'Cat');
Resultat:
+------------------------------------+ | REPLACE('Black dog', 'Dog', 'Cat') | +------------------------------------+ | Black dog | +------------------------------------+
I det här exemplet stämde inte fallet, så ingenting ersattes.
Tömma strängar
Så här händer när en tom sträng skickas för varje 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 det här fallet:
- Att skicka en tom sträng för den initiala strängen returnerar en tom sträng.
- Att skicka en tom sträng för det andra argumentet returnerar den ursprungliga strängen.
- Att skicka en tom sträng för det tredje argumentet tar bort strängen som ska ersättas från strängen.
Mellanslagstecken
En tom sträng är inte detsamma som mellanslagstecknet.
Så här händer när vi ändrar den tomma strängen till ett mellanslag:
SELECT
REPLACE(' ', 'dog', 'cat') AS "1",
REPLACE('Black dog', ' ', 'cat') AS "2",
REPLACE('Black dog', 'dog', ' ') AS "3";
Resultat:
+------+-------------+---------+ | 1 | 2 | 3 | +------+-------------+---------+ | | Blackcatdog | Black | +------+-------------+---------+
Därför, om strängen inte är något annat än ett mellanslag, kan vi ersätta det med en annan sträng:
SELECT REPLACE(' ', ' ', 'cat');
Resultat:
+--------------------------+ | REPLACE(' ', ' ', 'cat') | +--------------------------+ | cat | +--------------------------+
Nollargument
Tillhandahåller null
resulterar 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 | +------+------+------+
Argument saknas
Anropar REPLACE()
med fel antal argument, eller utan att skicka några argument resulterar i ett fel:
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