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 | +----------------------------+