sql >> Base de Datos >  >> RDS >> Mysql

MySQL REPLACE () - Reemplazar todas las instancias de una subcadena con otra cadena

MySQL REPLACE() La función le permite reemplazar todas las apariciones de una subcadena con otra cadena. Le permite hacer cosas como reemplazar todas las apariciones de una palabra con otra palabra, etc.

Este artículo demuestra su uso.

Sintaxis

Así es como funciona la sintaxis:

REPLACE(str,from_str,to_str)

Donde str es la cadena que contiene la/s subcadena/s. from_str es la subcadena que desea reemplazar con otra cadena. Y to_str es la nueva cadena que reemplazará a la anterior.

Ejemplo

He aquí un ejemplo básico:

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

Resultado:

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

En este caso, simplemente intercambiamos la palabra and con la palabra or . Debido a que hubo tres apariciones de esa palabra, las tres fueron reemplazadas.

Sensible a mayúsculas y minúsculas

Es importante recordar que REPLACE() la función distingue entre mayúsculas y minúsculas.

Ejemplo:

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

Resultado:

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

En este caso, solo una instancia de cat fue reemplazado, porque solo una instancia tenía el caso correcto. La primera instancia tenía una C mayúscula entonces no coincidía.

Eliminar una subcadena

También puede eliminar una subcadena por completo, simplemente reemplazando la subcadena con la cadena vacía ('' ):

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

Resultado:

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

Una salvaguardia

Otra forma (quizás más segura) de hacer esto es incluir parte del texto circundante y luego eliminar la parte innecesaria:

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

Resultado:

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

Esto protege contra la eliminación inadvertida de una subcadena que no debería eliminarse. Por ejemplo, si tenemos una URL como  http://bestwww.com , que sin darse cuenta se convertiría en http://bestcom sin la salvaguardia.

La misma protección se puede aplicar en los casos en los que está reemplazando texto (no solo eliminándolo). Por ejemplo, esto:

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

Resultado:

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

En este caso, agregué un espacio antes y después de la subcadena y su texto de reemplazo.

Si no hubiera hecho esto, habría terminado con esto:

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

Resultado:

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