Usando as funções REPLACE e REPLICATE do SQL Server 2000 Fazer tratamentos ou alterar os dados armazenados em campos de uma tabela é uma atividade fundamental para a administração de um banco de dados, neste artigo, mostrarei como podemos usar de forma simples as funções REPLACE e REPLICATE para fazer essas alterações. Vale lembrar, que seu uso é opcional na camada de dados de sua aplicação, ou seja, pode ser implementado na camada de regras de negócios usando funções similares da linguagem de programação utilizada no projeto. Abaixo estou explicando a sintaxe e mostrando exemplos práticos dessas funções com base no padrão Transact-SQL, que é usado pela Microsoft em sua solução de gerenciador de banco dados SQL Server 2000. REPLACE Esta função age localizando em uma expressão uma ocorrência de uma determinada string, e ao encontrar, substitui a referida string por qualquer outra especificada no argumento. Sintaxe: replace('expressão onde acontecerá a pesquisa' , 'string procurada' , 'string substitutiva ' ) Ex: Procura a palavra MORTA na frase “Água Morta, Humanidade Morta” e substitui pela palavra VIVA select REPLACE('Água Morta, Humanidade Morta','morta','viva') Procura um espaço em branco entre “MANOEL PIMETEL” e substitui por @ select REPLACE('manoel pimentel',' ','@') Procura um traço “-” e o substitui pelo sinal de barra “/” select REPLACE('15.154.154-45','-','/')
REPLICATE Repete N vezes um caractere qualquer Sintaxe: replicate (caractere a ser repetido , número de vezes) Exemplos: Repete o número “0” DEZ vezes da esquerda para direita select REPLICATE('0','10') Repete o número “0” dez vezes da esquerda para direita e concatena com o número “1545” select REPLICATE('0','10')+'1545' Descobre o tamanho em caracteres de “1545” e preenche o restante com zeros da direita para esquerda, até completar 10 caracteres, esta função é útil para casos onde é necessário gerar numeração quem levem zeros a esquerda. select REPLICATE('0',10-LEN(1545) )+'1545'
Exemplo envolvendo as duas funções: Este pequeno exemplo mostra como usar as duas funções em uma consulta ao banco de dados que retornará os valores contidos no campo CPF da tabela CLIENTES, eliminando todos os pontos ”.” e os traços “-“ e acrescentando zeros a esquerda do número retornado pela consulta. Para executar o exemplo, rode o script abaixo antes de testar as funções. ------------------------------------------------------------------------------- /* Criação da Tabela */create table CLIENTES ( NOME varchar(50), CPF varchar(30) ) go /*Povoamento dos registros da tabela*/ insert into CLIENTES (NOME,CPF) values('Pedro Fiqueira','402.205.672-04'); go insert into CLIENTES (NOME,CPF) values('Armando Fogueira','8.458.962-04'); go insert into CLIENTES (NOME,CPF) values('Aparecido Anunciação','28.458.962-04'); go insert into CLIENTES (NOME,CPF) values('Maria das Neves','270.442-34'); go insert into CLIENTES (NOME,CPF) values('Oscar Alho','048.839.002-82'); ------------------------------------------------------------------------------- Uma vez criada e povoada a tabela CLIENTE, digite o instrução SQL abaixo que mostra a aplicação dos recursos REPLACE e REPLICATE. ------------------------------------------------------------------------------- DECLARE @TAM varchar(30) set @TAM=15 /*Define o tamanho máximo de caracteres que deverá ser gerado */ ------------------------------------------------------------------------------- begin select NOME, CPF as 'CPF Orginal', replicate(0, @TAM- len(replace(replace(CPF,'.',''),'-','')))+ (replace(replace(CPF,'.',''),'-','')) as ‘CodigoModificado' /* Note que no código acima, primeiro descobrimos o numero de vezes que o ZERO será repetido através o cálculo @TAN-len(), que calcula o valor 15 menos o tamanho do número de CPF gravado no campo já eliminando os pontos e traços. E em seguida, concatenamos com o resultado tratado do campo CPF */ from CLIENTES end Após executar a instrução SQL acima você deverá obter um resultado idêntico à figura 01 abaixo, que mostra os campos NOME, CPF Original e Código Modificado. Figura 01 – Resultado da consulta Considerações Finais Vimos neste artigo que estas práticas são importantes para melhorar o processo de extração e tratamento de dados aplicados na elaboração de consultas, cubos, relatórios, exportação e importação de dados; vale salientar também, que essas técnicas podem ser usadas também em outros SGDBs que tenham funções idênticas ao REPLACE e REPLICATE. Referências www.microsoft.com.br – site da Microsoft www.msdn.com.br – site de apoio a desenvolvedores e profissionais que usam produtos Microsoft Obrigado a Todos! Fonte: http://www.sqlmagazine.com.br/Colunistas/ManoelPimentel/03_replace_replicate.asp 14/03/2011, 9:10hs |
quinta-feira, 17 de março de 2011
REPLACE e REPLICATE do SQL Server 2000
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário