Serie #FicaDica – SQL Server – Pt I

Salve, salve galera.. vou iniciamos hoje uma serie de artigos com algumas dicas simples, porém muito uteis no nosso dia-a-dia de desenvolvimento. Nesse primeiro artigo da serie vou dar uma dica utilizando SQL Server 2008. Quem nunca precisou algum dia pegar uma string de caracteres e quebrar ela por algum delimitador – exemplo clássico de arquivos separados por “;”, bom seguindo essa linha de raciocínio e partindo do principio que funções de manipulação de dados executadas no servidor ficam mais rápidas para serem processadas, vou mostrar um código simples, uma função do SQL Server,  na qual você informa qual o sequencia de letras – string – que quer manipular e qual o delimitador da cadeia, o retorno dessa função – que possui valor de tabela , em um artigo próximo abordaremos tipos de funções – é uma se relação de valores extraídos.  Bom vamos deixar o papo de lado e por a mão na massa :

CREATE FUNCTION [dbo].[FC_QUEBRA_POR_DELIMITACAO](
    @sInputList VARCHAR(250)
  , @sDelimiter VARCHAR(10)
) RETURNS @List TABLE (item VARCHAR(250))

BEGIN
DECLARE @sItem VARCHAR(8000)
WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0
 BEGIN
 SELECT
  @sItem=RTRIM(LTRIM(SUBSTRING(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1))),
  @sInputList=RTRIM(LTRIM(SUBSTRING(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList))))

 IF LEN(@sItem) > 0
  INSERT INTO @List SELECT @sItem
 END

IF LEN(@sInputList) > 0
 INSERT INTO @List SELECT @sInputList -- Put the last item in
RETURN
END

Caso queiram testar a função devidamente criada basta executar o trecho abaixo:


SELECT * FROM FC_QUEBRA_POR_DELIMITACAO('Esse;é;um;teste',';')

O retorno da execução acima seria:

Resultado

Resultado

Bom pessoal sem mais delongas, era isso o que eu queria deixar de dica para vocês hoje. Caso tenho gostado – ou se não gostaram também – me deem um feedback, entrem em contato comigo e deem sugestões de melhoria, de temas novos, ou me chamem para tomar um café que eu também aceito…. 😀

Até a próxima galera..

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s