Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL REPLACE() – Sostituisci tutte le istanze di una sottostringa con un'altra stringa

Il REPLACE() di MySQL La funzione consente di sostituire tutte le occorrenze di una sottostringa con un'altra stringa. Ti permette di fare cose come sostituire tutte le occorrenze di una parola con un'altra, ecc.

Questo articolo ne dimostra l'utilizzo.

Sintassi

Ecco come va la sintassi:

REPLACE(str,from_str,to_str)

Dove str è la stringa che contiene le sottostringhe. from_str è la sottostringa che vuoi sostituire con un'altra stringa. E to_str è la nuova stringa che sostituirà la vecchia stringa.

Esempio

Ecco un esempio di base:

SELECT REPLACE('Cats and dogs and cats and rabbits', 'and', 'or') AS Result;

Risultato:

+---------------------------------+
| Result                          |
+---------------------------------+
| Cats or dogs or cats or rabbits |
+---------------------------------+

In questo caso, scambiamo semplicemente la parola and con la parola or . Poiché c'erano tre occorrenze di quella parola, tutte e tre sono state sostituite.

Maiuscole/minuscole

È importante ricordare che REPLACE() la funzione fa distinzione tra maiuscole e minuscole.

Esempio:

SELECT REPLACE('Cats and dogs and cats and rabbits', 'cat', 'flea') AS Result;

Risultato:

+-------------------------------------+
| Result                              |
+-------------------------------------+
| Cats and dogs and fleas and rabbits |
+-------------------------------------+

In questo caso, solo un'istanza di cat è stato sostituito, perché solo un'istanza aveva il caso giusto. La prima istanza aveva una C maiuscola quindi non corrispondeva.

Rimuovi una sottostringa

Puoi anche rimuovere del tutto una sottostringa, semplicemente sostituendo la sottostringa con la stringa vuota ('' ):

SELECT REPLACE('http://www.database.guide', 'www.', '') AS Result;

Risultato:

+-----------------------+
| Result                |
+-----------------------+
| http://database.guide |
+-----------------------+

Una salvaguardia

Un altro modo (forse più sicuro) per farlo è includere parte del testo circostante, quindi rimuovere la parte non necessaria:

SELECT REPLACE('http://www.database.guide', 'http://www.', 'http://') AS Result;

Risultato:

+-----------------------+
| Result                |
+-----------------------+
| http://database.guide |
+-----------------------+

Questo protegge dalla rimozione involontaria di una sottostringa che non dovrebbe essere rimossa. Ad esempio, se abbiamo un URL come  http://bestwww.com , che si trasformerebbe inavvertitamente in http://bestcom senza la salvaguardia.

La stessa protezione può essere applicata nei casi in cui stai sostituendo il testo (non solo rimuovendolo). Ad esempio, questo:

SELECT REPLACE('Land of cats and dogs and sand', ' and ', ' or ') AS Result;

Risultato:

+------------------------------+
| Result                       |
+------------------------------+
| Land of cats or dogs or sand |
+------------------------------+

In questo caso ho aggiunto uno spazio prima e dopo la sottostringa e il suo testo sostitutivo.

Se non l'avessi fatto, avrei finito con questo:

SELECT REPLACE('Land of cats and dogs and sand', 'and', 'or') AS Result;

Risultato:

+----------------------------+
| Result                     |
+----------------------------+
| Lor of cats or dogs or sor |
+----------------------------+