sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona REPLACE() en MariaDB

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