MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

2 maneiras de substituir uma substring no MariaDB


Se você precisar substituir uma substring por outra string no MariaDB, aqui estão duas abordagens que você pode usar.

O REPLACE() Função


No MariaDB, o REPLACE() A função é projetada especificamente para substituir uma substring dentro de outra string.

Você fornece três argumentos ao chamar a função. Estas são a string, a substring e a string de substituição.

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

Neste caso, substituímos a substring dog com cat .

Se a string a ser substituída ocorrer várias vezes dentro da string, todas as ocorrências serão substituídas:
SELECT REPLACE('Black dogs and white dogs', 'dog', 'cat');

Resultado:
+----------------------------------------------------+
| REPLACE('Black dogs and white dogs', 'dog', 'cat') |
+----------------------------------------------------+
| Black cats and white cats                          |
+----------------------------------------------------+

O REPLACE() função executa uma correspondência com distinção entre maiúsculas e minúsculas.

Veja como REPLACE() Funciona no MariaDB para mais exemplos.

O REGEXP_REPLACE() Função


O REGEXP_REPLACE() função é semelhante ao REPLACE() função, exceto que permite que você faça a correspondência de padrões usando expressões regulares.

Isso faz com que REGEXP_REPLACE() mais poderoso que REPLACE() , pois você pode combinar com partes de uma string para substituir substrings que seriam mais difíceis ou impossíveis de combinar usando apenas REPLACE() .

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

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

Expressões regulares podem ser muito poderosas, e este exemplo usa um exemplo muito simples. Para usar REGEXP_REPLACE() efetivamente, você precisará saber o padrão correto a ser usado para o resultado desejado.

Também é possível fornecer a string literal completa como padrão, assim como você usaria com o REPLACE() função.

Portanto, poderíamos reescrever o primeiro exemplo nesta página para usar REGEXP_REPLACE() em vez de REPLACE() .

Aqui está um exemplo que os executa lado a lado para ilustrar o que quero dizer:
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 |
+---------------------------+---------------------------+

Além disso, o REGEXP_REPLACE() A função segue as regras de diferenciação de maiúsculas e minúsculas da ordenação efetiva. A correspondência é realizada sem distinção entre maiúsculas e minúsculas para ordenações que não diferenciam maiúsculas de minúsculas e com distinção entre maiúsculas e minúsculas para ordenações que diferenciam maiúsculas de minúsculas e para dados binários. No entanto, a distinção entre maiúsculas e minúsculas do agrupamento pode ser substituída usando o (?i ) e (?-i ) sinalizadores PCRE.

Veja como REGEXP_REPLACE() Funciona no MariaDB para exemplos de diferenciação de maiúsculas e minúsculas e muito mais.