No Oracle, o
REPLACE() A função permite que você substitua 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 de substituição (para substituir a substring).
Você pode omitir a string de substituição, nesse caso, a função removerá todas as instâncias da substring.
Sintaxe
A sintaxe fica assim:
REPLACE(char, search_string
[, replacement_string ]
) Onde
char é a string, search_string é a substring a ser substituída e replacement_string é a string pela qual substituir essa substring. Exemplo
Segue um exemplo básico:
SELECT
REPLACE('Barrier Island', 'Island', 'Reef')
FROM DUAL; Resultado:
Barrier Reef
Neste caso, substituímos a substring
Island com Reef . 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')
FROM DUAL; Resultado:
Black cats and white cats
Sem correspondência
Se a substring não ocorrer na string,
REPLACE() retorna a string inalterada:SELECT
REPLACE('Barrier Island', 'to entry', 'Reef')
FROM DUAL; Resultado:
Barrier Island
Remover uma substring
Omitir o terceiro argumento remove a substring da string:
SELECT
REPLACE('Black dogs and white dogs', 'dogs')
FROM DUAL; Resultado:
Black and white
Se você observar atentamente, notará que os espaços ainda permanecem, pois não especificamos nenhum espaço na substring.
Aqui está novamente com o espaço incluído:
SELECT
REPLACE('Black dogs and white dogs', ' dogs')
FROM DUAL; Resultado:
Black and white
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('Barrier Island', 'island', 'reef')
FROM DUAL; Resultado:
Barrier Island
Neste exemplo, o caso não correspondeu e, portanto, a string original foi retornada inalterada.
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"
FROM DUAL; 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"
FROM DUAL; 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')
FROM DUAL; Resultado:
cat
Argumentos nulos
Passando
null para cada argumento funciona como passar uma string vazia:SET NULL 'null';
SELECT
REPLACE(null, 'dog', 'cat') AS "1",
REPLACE('Black dog', null, 'cat') AS "2",
REPLACE('Black dog', 'dog', null) AS "3"
FROM DUAL; Resultado:
1 2 3 _______ ____________ _________ null Black dog Black
Por padrão, SQLcl e SQL*Plus retornam um espaço em branco sempre que
null ocorre como resultado de um SQL SELECT demonstração. No entanto, você pode usar
SET NULL para especificar uma string diferente a ser retornada. Aqui eu especifiquei que a string null deve ser devolvido. Argumentos ausentes
Chamando
REPLACE() sem passar nenhum argumento resulta em um erro:SELECT REPLACE()
FROM DUAL; Resultado:
Error starting at line : 1 in command - SELECT REPLACE() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
Muitos argumentos
E passar muitos argumentos retorna um erro:
SELECT REPLACE('Cat', 'a', 'b', 'c')
FROM DUAL; Resultado:
Error starting at line : 1 in command -
SELECT REPLACE('Cat', 'a', 'b', 'c')
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 - "too many arguments for function"
*Cause:
*Action: