Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL REPLACE() – Substitui todas as instâncias de uma substring por outra string


O REPLACE() do MySQL A função permite substituir todas as ocorrências de uma substring por outra string. Ele permite que você faça coisas como substituir todas as ocorrências de uma palavra por outra, etc.

Este artigo demonstra seu uso.


Sintaxe


Veja como fica a sintaxe:
REPLACE(str,from_str,to_str)

Onde str é a string que contém a substring/s. from_str é a substring que você deseja substituir por outra string. E to_str é a nova string que substituirá a string antiga.

Exemplo


Segue um exemplo básico:
SELECT REPLACE('Cats and dogs and cats and rabbits', 'and', 'or') AS Result;

Resultado:
+---------------------------------+
| Result                          |
+---------------------------------+
| Cats or dogs or cats or rabbits |
+---------------------------------+

Neste caso, simplesmente trocamos a palavra and com a palavra or . Como houve três ocorrências dessa palavra, todas as três foram substituídas.

Sensibilidade a maiúsculas e minúsculas


É importante lembrar que o REPLACE() função diferencia maiúsculas de minúsculas.

Exemplo:
SELECT REPLACE('Cats and dogs and cats and rabbits', 'cat', 'flea') AS Result;

Resultado:
+-------------------------------------+
| Result                              |
+-------------------------------------+
| Cats and dogs and fleas and rabbits |
+-------------------------------------+

Neste caso, apenas uma instância de cat foi substituído, porque apenas uma instância tinha o caso certo. A primeira instância tinha um C maiúsculo então não combinou.

Remover uma substring


Você também pode remover uma substring completamente, simplesmente substituindo a substring pela string vazia ('' ):
SELECT REPLACE('http://www.database.guide', 'www.', '') AS Result;

Resultado:
+-----------------------+
| Result                |
+-----------------------+
| http://database.guide |
+-----------------------+

Uma Salvaguarda


Outra maneira (talvez mais segura) de fazer isso é incluir parte do texto ao redor e remover a parte desnecessária:
SELECT REPLACE('http://www.database.guide', 'http://www.', 'http://') AS Result;

Resultado:
+-----------------------+
| Result                |
+-----------------------+
| http://database.guide |
+-----------------------+

Isso evita a remoção inadvertida de uma substring que não deve ser removida. Por exemplo, se tivermos um URL como  http://bestwww.com , que inadvertidamente se transformaria em http://bestcom sem a salvaguarda.

A mesma proteção pode ser aplicada nos casos em que você está substituindo o texto (não apenas removendo-o). Por exemplo, isso:
SELECT REPLACE('Land of cats and dogs and sand', ' and ', ' or ') AS Result;

Resultado:
+------------------------------+
| Result                       |
+------------------------------+
| Land of cats or dogs or sand |
+------------------------------+

Nesse caso, adicionei um espaço antes e depois da substring e seu texto de substituição.

Se eu não tivesse feito isso, eu teria acabado com isso:
SELECT REPLACE('Land of cats and dogs and sand', 'and', 'or') AS Result;

Resultado:
+----------------------------+
| Result                     |
+----------------------------+
| Lor of cats or dogs or sor |
+----------------------------+