Database
 sql >> Base de Dados >  >> RDS >> Database

Como usar REPLACE no SQL


Ao consultar dados com SQL, a necessidade de manipular resultados baseados em strings é muito comum. Existem muitas opções nos principais sistemas de banco de dados relacionais para essa tarefa. Neste artigo, discutiremos o caso de uso e a funcionalidade da função REPLACE SQL.

Primeiros passos com o REPLACE


A funcionalidade FIND and REPLACE é bem conhecida por todos, pois vem com qualquer editor de texto. O ANSI SQL oferece a funcionalidade REPLACE na forma de uma função integrada do sistema. Neste artigo, usarei o SQL Server como meu RDMS de escolha.

RLOCAL Parâmetros de função


REPLACE (expressão_string, padrão_string, substituição_string)

String_expression é uma string que será transformada, pode ser uma única string ou uma coluna de uma consulta SQL recebida.

String_pattern é um padrão de pesquisa que é aplicado à expressão de cadeia a ser substituída.

String_replacement é um valor de substituição aplicado à string quando o string _pattern corresponde à string_expression .

Vamos dar uma olhada em vários exemplos para entender melhor a funcionalidade REPLACE.

Criando dados de amostra


Para este exemplo, vou criar uma tabela temporária para ser usado com a função REPLACE. Os nomes das colunas corresponderão aos valores dos parâmetros da função.

IF OBJECT_ID(N'tempdb..#TEMP_REPLACE_DEMO') IS NOT NULL
DROP TABLE #TEMP_REPLACE_DEMO


CREATE TABLE #TEMP_REPLACE_DEMO
(
ID INT IDENTITY(1,1),
STRING_EXPRESSION VARCHAR(2000),
STRING_PATTERN VARCHAR(200),
STRING_REPLACEMENT VARCHAR(200)
)

--REPLACE THE VALUE CAR WITH FOX
INSERT INTO #TEMP_REPLACE_DEMO
VALUES('The red car is the fastest car in the race.','car','fox')

--REPLACE THE VALUE 4 WITH 8
INSERT INTO #TEMP_REPLACE_DEMO
VALUES('There are 4 model ford cars in the parking lot.','4','8')

--REMOVE THE BLANK SPACE CHARACTER
INSERT INTO #TEMP_REPLACE_DEMO
VALUES('    This sentence    has     irregular spacing              .       ',' ','')

R simples e dinâmicoPLACE Exemplos


Agora que a tabela está carregada com alguns dados de exemplo, vamos examinar como o REPLACE A função pode ser aplicada aos dados em um nível básico e depois em uma capacidade mais dinâmica.

No primeiro exemplo, os parâmetros são codificados como valores de string para a função.
--REPLACE THE VALUE CAR WITH FOX
SELECT REPLACE('The red car is the fastest car in the race.','car','fox') AS RESULT_FOR_SENTENCE

Os valores também podem ser lidos da tabela dinamicamente. Nesse caso, os valores de expressão, padrão e substituição são todos lidos da tabela diretamente, em vez de serem codificados permanentemente.
--DYNAMIC EXAMPLE FOR ALL COLUMNS IN THE TABLE.
SELECT ID,REPLACE(STRING_EXPRESSION,STRING_PATTERN,STRING_REPLACEMENT) AS RESULT_FOR_TABLE
FROM #TEMP_REPLACE_DEMO

Os resultados para ID 1 são os mesmos do exemplo acima, a única diferença é que os valores foram lidos das colunas individuais.

Substituições aninhadas


A função REPLACE também pode ser usada em uma capacidade aninhada. Isso significa que os resultados da função REPLACE interna podem se tornar o parâmetro STRING_EXPRESSION da função de substituição externa.

Aqui estão alguns exemplos desse padrão nos dados de amostra:
--REPLACE THE VALUE CAR WITH FOX | REPLACE THE VALUE "fastest" WITH "slowest"
SELECT REPLACE(REPLACE('The red car is the fastest car in the race.','car','fox'),'fastest','slowest')


--REMOVE THE BLANK SPACE CHARACTER | REPLACE THE VALUE "irregular" with "no"
SELECT REPLACE(REPLACE('    This sentence    has     irregular spacing              .       ',' ',''),'irregular','NO')

Agrupamento e REPLACE em SQL


O agrupamento é um fator importante a ser considerado ao trabalhar com dados de string e a função REPLACE. O agrupamento pode ser definido em vários níveis de um banco de dados, como uma conta ou nível de instância, banco de dados, esquema, sessão ou nível de tabela. Essa configuração pode afetar o funcionamento da função REPLACE.

Neste exemplo, você não pode esperar que A maiúscula seja substituída por b minúscula. Mas depende do agrupamento que está sendo herdado para a conexão atual com o banco de dados.
--REPLACEMENT WITHOUT EXPLICIT COLLATION.
SELECT REPLACE('A','a','b') AS DEFAULT_COLLATION

Este resultado corresponde a a A devido ao agrupamento.

A configuração de agrupamento no SQL Server pode ser verificada no nível do servidor:
--VIEW CURRENT COLLATION
SELECT CONVERT (varchar(256), SERVERPROPERTY('collation')); 
 

A chave aqui é o CI que significa maiúsculas e minúsculas. Para aplicar a função REPLACE em uma capacidade que diferencia maiúsculas de minúsculas, o parâmetro string_expression pode ser agrupado explicitamente.
-- USE COLLATE TO MATCH CHARACTER CASING FOR REPLACE
SELECT REPLACE('A' COLLATE Latin1_General_CS_AS ,'a','b') as Explicit_Collation;

Neste exemplo, como o parâmetro string_expression é agrupado como diferencia maiúsculas de minúsculas, a função REPLACE não substitui o valor original.

Resumo


A função REPLACE é uma ótima ferramenta para manipulação básica e avançada de strings em vários sistemas de banco de dados relacionais. Este artigo examinou a aplicação básica da função REPLACE, como usá-la em uma capacidade dinâmica. Também discutimos o uso de REPLACE como uma função aninhada e como a ordenação pode afetar os resultados retornados por ela.