In MariaDB, REPLACE()
is een ingebouwde tekenreeksfunctie waarmee u een deel van een tekenreeks kunt vervangen door een andere tekenreeks.
De functie accepteert drie argumenten:de tekenreeks, de subtekenreeks die moet worden vervangen en de tekenreeks waarmee de subtekenreeks moet worden vervangen.
Syntaxis
De syntaxis gaat als volgt:
REPLACE(str,from_str,to_str)
Waar str
is de string, en from_str
is de substring die moet worden vervangen, en to_str
is de tekenreeks waarmee die subtekenreeks moet worden vervangen.
Voorbeeld
Hier is een eenvoudig voorbeeld:
SELECT REPLACE('Black dog', 'dog', 'cat');
Resultaat:
+------------------------------------+ | REPLACE('Black dog', 'dog', 'cat') | +------------------------------------+ | Black cat | +------------------------------------+
In dit geval hebben we de substring dog
vervangen met cat
.
Meerdere wedstrijden
Als de te vervangen tekenreeks meerdere keren voorkomt binnen de tekenreeks, worden alle exemplaren vervangen:
SELECT REPLACE('Black dogs and white dogs', 'dog', 'cat');
Resultaat:
+----------------------------------------------------+ | REPLACE('Black dogs and white dogs', 'dog', 'cat') | +----------------------------------------------------+ | Black cats and white cats | +----------------------------------------------------+
Geen overeenkomst
Als de substring niet voorkomt in de string, REPLACE()
geeft de string ongewijzigd terug:
SELECT REPLACE('Black dog', 'horse', 'cat');
Resultaat:
+--------------------------------------+ | REPLACE('Black dog', 'horse', 'cat') | +--------------------------------------+ | Black dog | +--------------------------------------+
Hoofdlettergevoeligheid
De REPLACE()
functie voert een hoofdlettergevoelige overeenkomst uit:
SELECT REPLACE('Black dog', 'Dog', 'Cat');
Resultaat:
+------------------------------------+ | REPLACE('Black dog', 'Dog', 'Cat') | +------------------------------------+ | Black dog | +------------------------------------+
In dit voorbeeld kwam de case niet overeen en is er dus niets vervangen.
Lege snaren
Dit is wat er gebeurt als een lege string wordt doorgegeven voor elk gegeven argument:
SELECT
REPLACE('', 'dog', 'cat') AS "1",
REPLACE('Black dog', '', 'cat') AS "2",
REPLACE('Black dog', 'dog', '') AS "3";
Resultaat:
+------+-----------+--------+ | 1 | 2 | 3 | +------+-----------+--------+ | | Black dog | Black | +------+-----------+--------+
Dus in dit geval:
- Het doorgeven van een lege tekenreeks voor de eerste tekenreeks retourneert een lege tekenreeks.
- Het doorgeven van een lege string voor het tweede argument geeft de originele string terug.
- Als je een lege tekenreeks doorgeeft voor het derde argument, wordt de tekenreeks die moet worden vervangen uit de tekenreeks verwijderd.
Spatieteken
Een lege tekenreeks is niet hetzelfde als het spatieteken.
Dit is wat er gebeurt als we de lege tekenreeks in een spatie veranderen:
SELECT
REPLACE(' ', 'dog', 'cat') AS "1",
REPLACE('Black dog', ' ', 'cat') AS "2",
REPLACE('Black dog', 'dog', ' ') AS "3";
Resultaat:
+------+-------------+---------+ | 1 | 2 | 3 | +------+-------------+---------+ | | Blackcatdog | Black | +------+-------------+---------+
Daarom, als de string niets anders is dan een spatie, dan kunnen we die vervangen door een andere string:
SELECT REPLACE(' ', ' ', 'cat');
Resultaat:
+--------------------------+ | REPLACE(' ', ' ', 'cat') | +--------------------------+ | cat | +--------------------------+
Nullargumenten
null
opgeven resulteert in null
:
SELECT
REPLACE(null, 'dog', 'cat') AS "1",
REPLACE('Black dog', null, 'cat') AS "2",
REPLACE('Black dog', 'dog', null) AS "3";
Resultaat:
+------+------+------+ | 1 | 2 | 3 | +------+------+------+ | NULL | NULL | NULL | +------+------+------+
Ontbrekend argument
REPLACE()
. aanroepen met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten resulteert in een fout:
SELECT REPLACE();
Resultaat:
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