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

Come funziona REPLACE() in MariaDB

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