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.