Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

quinta-feira, 17 de março de 2011

REPLACE e REPLICATE do SQL Server 2000

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','-','/')
Nota 01
Utilize  o Microsoft Query Analyzer para rodar esses exemplos, em qualquer database de testes de sua instância SQL.
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'
Nota 02
Neste exemplo, estamos usando a função LEN, que retorna a quantidade de caracteres em uma expressão.
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




Nenhum comentário:

Postar um comentário

Related Posts Plugin for WordPress, Blogger...