En MariaDB, REPLACE()
es una función de cadena incorporada que le permite reemplazar una parte de una cadena con otra cadena.
La función acepta tres argumentos:la cadena, la subcadena a reemplazar y la cadena con la que reemplazar la subcadena.
Sintaxis
La sintaxis es así:
REPLACE(str,from_str,to_str)
Donde str
es la cadena, y from_str
es la subcadena a reemplazar, y to_str
es la cadena con la que reemplazar esa subcadena.
Ejemplo
He aquí un ejemplo básico:
SELECT REPLACE('Black dog', 'dog', 'cat');
Resultado:
+------------------------------------+ | REPLACE('Black dog', 'dog', 'cat') | +------------------------------------+ | Black cat | +------------------------------------+
En este caso reemplazamos la subcadena dog
con cat
.
Coincidencias Múltiples
Si la cadena que se va a reemplazar aparece varias veces dentro de la cadena, se reemplazan todas las apariciones:
SELECT REPLACE('Black dogs and white dogs', 'dog', 'cat');
Resultado:
+----------------------------------------------------+ | REPLACE('Black dogs and white dogs', 'dog', 'cat') | +----------------------------------------------------+ | Black cats and white cats | +----------------------------------------------------+
Sin coincidencia
Si la subcadena no aparece en la cadena, REPLACE()
devuelve la cadena sin cambios:
SELECT REPLACE('Black dog', 'horse', 'cat');
Resultado:
+--------------------------------------+ | REPLACE('Black dog', 'horse', 'cat') | +--------------------------------------+ | Black dog | +--------------------------------------+
Sensibilidad de mayúsculas y minúsculas
El REPLACE()
la función realiza una coincidencia que distingue entre mayúsculas y minúsculas:
SELECT REPLACE('Black dog', 'Dog', 'Cat');
Resultado:
+------------------------------------+ | REPLACE('Black dog', 'Dog', 'Cat') | +------------------------------------+ | Black dog | +------------------------------------+
En este ejemplo, el caso no coincidía, por lo que no se reemplazó nada.
Cadenas vacías
Esto es lo que sucede cuando se pasa una cadena vacía para cada argumento dado:
SELECT
REPLACE('', 'dog', 'cat') AS "1",
REPLACE('Black dog', '', 'cat') AS "2",
REPLACE('Black dog', 'dog', '') AS "3";
Resultado:
+------+-----------+--------+ | 1 | 2 | 3 | +------+-----------+--------+ | | Black dog | Black | +------+-----------+--------+
Así que en este caso:
- Pasar una cadena vacía como cadena inicial devuelve una cadena vacía.
- Pasar una cadena vacía para el segundo argumento devuelve la cadena original.
- Pasar una cadena vacía para el tercer argumento elimina la cadena que se reemplazará de la cadena.
Carácter espacial
Una cadena vacía no es lo mismo que el carácter de espacio.
Esto es lo que sucede cuando cambiamos la cadena vacía por un espacio:
SELECT
REPLACE(' ', 'dog', 'cat') AS "1",
REPLACE('Black dog', ' ', 'cat') AS "2",
REPLACE('Black dog', 'dog', ' ') AS "3";
Resultado:
+------+-------------+---------+ | 1 | 2 | 3 | +------+-------------+---------+ | | Blackcatdog | Black | +------+-------------+---------+
Por lo tanto, si la cadena no es más que un espacio, podemos reemplazarlo con otra cadena:
SELECT REPLACE(' ', ' ', 'cat');
Resultado:
+--------------------------+ | REPLACE(' ', ' ', 'cat') | +--------------------------+ | cat | +--------------------------+
Argumentos nulos
Proporcionar null
da como resultado null
:
SELECT
REPLACE(null, 'dog', 'cat') AS "1",
REPLACE('Black dog', null, 'cat') AS "2",
REPLACE('Black dog', 'dog', null) AS "3";
Resultado:
+------+------+------+ | 1 | 2 | 3 | +------+------+------+ | NULL | NULL | NULL | +------+------+------+
Argumento faltante
Llamando a REPLACE()
con el número incorrecto de argumentos, o sin pasar ningún argumento da como resultado un error:
SELECT REPLACE();
Resultado:
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