No MariaDB,
REPLACE()
é uma função de string integrada que permite substituir uma parte de uma string por outra string. A função aceita três argumentos:a string, a substring a ser substituída e a string pela qual substituir a substring.
Sintaxe
A sintaxe fica assim:
REPLACE(str,from_str,to_str)
Onde
str
é a string e from_str
é a substring a ser substituída e to_str
é a string pela qual substituir essa substring. Exemplo
Segue um exemplo básico:
SELECT REPLACE('Black dog', 'dog', 'cat');
Resultado:
+------------------------------------+ | REPLACE('Black dog', 'dog', 'cat') | +------------------------------------+ | Black cat | +------------------------------------+
Neste caso, substituímos a substring
dog
com cat
. Várias correspondências
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 | +----------------------------------------------------+
Sem correspondência
Se a substring não ocorrer na string,
REPLACE()
retorna a string inalterada:SELECT REPLACE('Black dog', 'horse', 'cat');
Resultado:
+--------------------------------------+ | REPLACE('Black dog', 'horse', 'cat') | +--------------------------------------+ | Black dog | +--------------------------------------+
Sensibilidade de maiúsculas e minúsculas
O
REPLACE()
função executa uma correspondência com distinção entre maiúsculas e minúsculas:SELECT REPLACE('Black dog', 'Dog', 'Cat');
Resultado:
+------------------------------------+ | REPLACE('Black dog', 'Dog', 'Cat') | +------------------------------------+ | Black dog | +------------------------------------+
Neste exemplo, o caso não correspondeu e, portanto, nada foi substituído.
Strings vazias
Aqui está o que acontece quando uma string vazia é passada 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 | +------+-----------+--------+
Então neste caso:
- Passar uma string vazia para a string inicial retorna uma string vazia.
- Passar uma string vazia para o segundo argumento retorna a string original.
- Passar uma string vazia para o terceiro argumento remove a string a ser substituída da string.
Caráter Espacial
Uma string vazia não é o mesmo que o caractere de espaço.
Aqui está o que acontece quando alteramos a string vazia para um espaço:
SELECT
REPLACE(' ', 'dog', 'cat') AS "1",
REPLACE('Black dog', ' ', 'cat') AS "2",
REPLACE('Black dog', 'dog', ' ') AS "3";
Resultado:
+------+-------------+---------+ | 1 | 2 | 3 | +------+-------------+---------+ | | Blackcatdog | Black | +------+-------------+---------+
Portanto, se a string não for nada além de um espaço, podemos substituí-la por outra string:
SELECT REPLACE(' ', ' ', 'cat');
Resultado:
+--------------------------+ | REPLACE(' ', ' ', 'cat') | +--------------------------+ | cat | +--------------------------+
Argumentos nulos
Fornecendo
null
resulta em 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 ausente
Chamando
REPLACE()
com o número errado de argumentos ou sem passar nenhum argumento resulta em um erro: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