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

2 formas de reemplazar una subcadena en MariaDB

Si necesita reemplazar una subcadena con otra cadena en MariaDB, aquí hay dos enfoques que puede usar.

El REPLACE() Función

En MariaDB, el REPLACE() La función está diseñada específicamente para reemplazar una subcadena dentro de otra cadena.

Proporciona tres argumentos al llamar a la función. Estos son la cadena, la subcadena y la cadena de reemplazo.

Ejemplo:

SELECT REPLACE('My dog likes to dig holes', 'dog', 'cat');

Resultado:

+----------------------------------------------------+
| REPLACE('My dog likes to dig holes', 'dog', 'cat') |
+----------------------------------------------------+
| My cat likes to dig holes                          |
+----------------------------------------------------+

En este caso reemplazamos la subcadena dog con cat .

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

El REPLACE() La función realiza una coincidencia que distingue entre mayúsculas y minúsculas.

Vea cómo REPLACE() Funciona en MariaDB para más ejemplos.

El REGEXP_REPLACE() Función

El REGEXP_REPLACE() la función es similar a REPLACE() función, excepto que le permite hacer coincidencias de patrones usando expresiones regulares.

Esto hace que REGEXP_REPLACE() más poderoso que REPLACE() , ya que puede hacer coincidir partes de una cadena para reemplazar subcadenas que serían más difíciles o imposibles de hacer coincidir usando solo REPLACE() .

Ejemplo:

SELECT REGEXP_REPLACE('My cat has cuts', 'c.t', 'dog');

Resultado:

+-------------------------------------------------+
| REGEXP_REPLACE('My cat has cuts', 'c.t', 'dog') |
+-------------------------------------------------+
| My dog has dogs                                 |
+-------------------------------------------------+

Las expresiones regulares pueden ser muy poderosas, y este ejemplo usa un ejemplo muy simple. Para usar REGEXP_REPLACE() efectivamente, necesitará saber el patrón correcto para usar para el resultado deseado.

También es posible proporcionar la cadena literal completa como patrón, tal como lo haría con REPLACE() función.

Por lo tanto, podríamos reescribir el primer ejemplo de esta página para usar REGEXP_REPLACE() en lugar de REPLACE() .

Aquí hay un ejemplo que los ejecuta uno al lado del otro para ilustrar lo que quiero decir:

SELECT 
    REPLACE('My dog likes to dig holes', 'dog', 'cat') AS "REPLACE()",
    REGEXP_REPLACE('My dog likes to dig holes', 'dog', 'cat') AS "REGEXP_REPLACE()";

Resultado:

+---------------------------+---------------------------+
| REPLACE()                 | REGEXP_REPLACE()          |
+---------------------------+---------------------------+
| My cat likes to dig holes | My cat likes to dig holes |
+---------------------------+---------------------------+

Además, REGEXP_REPLACE() La función sigue las reglas de distinción entre mayúsculas y minúsculas de la intercalación efectiva. La coincidencia se realiza sin distinción entre mayúsculas y minúsculas para intercalaciones que no distinguen entre mayúsculas y minúsculas, y entre mayúsculas y minúsculas para intercalaciones que distinguen entre mayúsculas y minúsculas y para datos binarios. Sin embargo, la distinción entre mayúsculas y minúsculas se puede anular mediante (?i ) y (?-i ) Indicadores PCRE.

Vea cómo REGEXP_REPLACE() Funciona en MariaDB para ejemplos de mayúsculas y minúsculas y más.