In MariaDB, REPLACE()
è una funzione di stringa incorporata che consente di sostituire una parte di una stringa con un'altra stringa.
La funzione accetta tre argomenti:la stringa, la sottostringa da sostituire e la stringa con cui sostituire la sottostringa.
Sintassi
La sintassi è questa:
REPLACE(str,from_str,to_str)
Dove str
è la stringa e from_str
è la sottostringa da sostituire e to_str
è la stringa con cui sostituire quella sottostringa.
Esempio
Ecco un esempio di base:
SELECT REPLACE('Black dog', 'dog', 'cat');
Risultato:
+------------------------------------+ | REPLACE('Black dog', 'dog', 'cat') | +------------------------------------+ | Black cat | +------------------------------------+
In questo caso abbiamo sostituito la sottostringa dog
con cat
.
Partite multiple
Se la stringa da sostituire si verifica più volte all'interno della stringa, tutte le occorrenze vengono sostituite:
SELECT REPLACE('Black dogs and white dogs', 'dog', 'cat');
Risultato:
+----------------------------------------------------+ | REPLACE('Black dogs and white dogs', 'dog', 'cat') | +----------------------------------------------------+ | Black cats and white cats | +----------------------------------------------------+
Nessuna corrispondenza
Se la sottostringa non è presente nella stringa, REPLACE()
restituisce la stringa invariata:
SELECT REPLACE('Black dog', 'horse', 'cat');
Risultato:
+--------------------------------------+ | REPLACE('Black dog', 'horse', 'cat') | +--------------------------------------+ | Black dog | +--------------------------------------+
Maiuscole/minuscole
Il REPLACE()
la funzione esegue una corrispondenza con distinzione tra maiuscole e minuscole:
SELECT REPLACE('Black dog', 'Dog', 'Cat');
Risultato:
+------------------------------------+ | REPLACE('Black dog', 'Dog', 'Cat') | +------------------------------------+ | Black dog | +------------------------------------+
In questo esempio, il caso non corrispondeva e quindi non è stato sostituito nulla.
Stringhe vuote
Ecco cosa succede quando viene passata una stringa vuota per ogni dato argomento:
SELECT
REPLACE('', 'dog', 'cat') AS "1",
REPLACE('Black dog', '', 'cat') AS "2",
REPLACE('Black dog', 'dog', '') AS "3";
Risultato:
+------+-----------+--------+ | 1 | 2 | 3 | +------+-----------+--------+ | | Black dog | Black | +------+-----------+--------+
Quindi in questo caso:
- Il passaggio di una stringa vuota per la stringa iniziale restituisce una stringa vuota.
- Il passaggio di una stringa vuota per il secondo argomento restituisce la stringa originale.
- Il passaggio di una stringa vuota per il terzo argomento rimuove la stringa da sostituire dalla stringa.
Carattere spaziale
Una stringa vuota non è la stessa del carattere spazio.
Ecco cosa succede quando cambiamo la stringa vuota in uno spazio:
SELECT
REPLACE(' ', 'dog', 'cat') AS "1",
REPLACE('Black dog', ' ', 'cat') AS "2",
REPLACE('Black dog', 'dog', ' ') AS "3";
Risultato:
+------+-------------+---------+ | 1 | 2 | 3 | +------+-------------+---------+ | | Blackcatdog | Black | +------+-------------+---------+
Pertanto, se la stringa non è altro che uno spazio, possiamo sostituirlo con un'altra stringa:
SELECT REPLACE(' ', ' ', 'cat');
Risultato:
+--------------------------+ | REPLACE(' ', ' ', 'cat') | +--------------------------+ | cat | +--------------------------+
Argomenti nulli
Fornendo null
risulta null
:
SELECT
REPLACE(null, 'dog', 'cat') AS "1",
REPLACE('Black dog', null, 'cat') AS "2",
REPLACE('Black dog', 'dog', null) AS "3";
Risultato:
+------+------+------+ | 1 | 2 | 3 | +------+------+------+ | NULL | NULL | NULL | +------+------+------+
Argomento mancante
Chiamando REPLACE()
con il numero errato di argomenti o senza passare alcun argomento genera un errore:
SELECT REPLACE();
Risultato:
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