Usuário com melhor resposta
SQL Recursivo em Campo Varchar

Pergunta
-
Galera estou com duvida em criar um código recursivo para extrair dados de um único campo string
o Campo esta populado com a seguinte string ("Varchar")
ATV | Recursos
005 | 101561[3];101593[0.5];101780[1]
e preciso que retorne os seguintes registros :
ATV | Código | qtdade
005 | 101561 | 3
005 | 101593 | 0.5
005 | 101780 | 1
- Editado Denilson I. Julião terça-feira, 5 de maio de 2015 13:09
Respostas
-
Veja esse exemplo:
http://stackoverflow.com/questions/5493510/turning-a-comma-separated-string-into-individual-rows
O que vc tem sao dois "splits"... o primeiro quebra a string usando o ";" em multiplas linhas.. o segundo usa o "[" para criar uma nova coluna (essa parte vai ter que ser tratada de forma bem especifica, pois após o split vai sobra o caractere "]")
O exemplo do link mostra como retornar uma tabela a partir de uma string separada por ","(virgula) que vai atender a primeira parte do seu problema... a segunda basta seguir esse outro exemplo:
http://stackoverflow.com/questions/10581772/how-to-split-a-comma-separated-value-to-columns
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Marcado como Resposta Denilson I. Julião terça-feira, 5 de maio de 2015 13:26
Todas as Respostas
-
Veja esse exemplo:
http://stackoverflow.com/questions/5493510/turning-a-comma-separated-string-into-individual-rows
O que vc tem sao dois "splits"... o primeiro quebra a string usando o ";" em multiplas linhas.. o segundo usa o "[" para criar uma nova coluna (essa parte vai ter que ser tratada de forma bem especifica, pois após o split vai sobra o caractere "]")
O exemplo do link mostra como retornar uma tabela a partir de uma string separada por ","(virgula) que vai atender a primeira parte do seu problema... a segunda basta seguir esse outro exemplo:
http://stackoverflow.com/questions/10581772/how-to-split-a-comma-separated-value-to-columns
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Marcado como Resposta Denilson I. Julião terça-feira, 5 de maio de 2015 13:26
-
Bom dia,
Denilson, a quantidade de códigos existentes na coluna Recursos é fixa?
Está limitada a 3 ou é apenas um exemplo?
Assinatura: http://www.imoveisemexposicao.com.br
-
-
Bom dia,
Fiz o código abaixo pode utilizá-lo e adaptar a sua realidade.
CREATE FUNCTION [dbo].[F_SPLIT](@STRING VARCHAR(MAX), @DELIMITADOR VARCHAR(3000) ) RETURNS @RESULT TABLE (ITENS VARCHAR(8000)) BEGIN DECLARE @parte VARCHAR(8000) WHILE CHARINDEX(@DELIMITADOR,@STRING,0) <> 0 BEGIN SELECT @parte=RTRIM(LTRIM(SUBSTRING(@STRING,1,CHARINDEX(@DELIMITADOR,@STRING,0)-1))), @STRING=RTRIM(LTRIM(SUBSTRING(@STRING,CHARINDEX(@DELIMITADOR,@STRING,0)+LEN(@DELIMITADOR),LEN(@STRING)))) IF LEN(@parte) > 0 INSERT INTO @RESULT SELECT @parte END IF LEN(@STRING) > 0 INSERT INTO @RESULT SELECT @STRING RETURN END
SELECT * FROM DBO.[F_SPLIT] ('12333|1212222|23Y3UDJWELFHJ|JEDOIJEDJDDLK|HEJKEHEJHEK|HEJKHEJEHJKE|','|')
Vale lembrar que esse tipo de função tem um custo muito alto para o SQL Server o melhor cenário seria fazer isso via aplicação, também pode ser criado uma função para fazer isso e no C# gerar um assembly e 'importar' para o sql server e usar ele. Link
Atenciosamente, Ruberlei. www.t-sql.com.br