Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rasoal

Campo com string e separa a informações separada por

Recommended Posts

Amigos,

 

Estou com uma dúvida e gostaria de uma ajuda.

 

Tenho um campo com string e separa a informações separada por ';'

Exemplo:

"I;046994;09.002;1106.28"

 

Gostaria de separar as informações em tabela

Exemplo:

Dados1 Dados2 Dados3 Dados4

I 046994 09.002 1106.28

 

Os campos não tem tamanho limitado de caracter.

 

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rasoal,

 

como você nao colocou a versao do SQL que esta utilizando, você pode usar o BULK INSERT

BULK INSERT tabela
FROM 'c:\teste.txt' WITH ( FIELDTERMINATOR =';',ROWTERMINATOR = '\n' )

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rasoal,

 

como você nao colocou a versao do SQL que esta utilizando, você pode usar o BULK INSERT

BULK INSERT tabela
FROM 'c:\teste.txt' WITH ( FIELDTERMINATOR =';',ROWTERMINATOR = '\n' )

Abçs

Junior,

 

Obrigado pela ajuda ,mas na verdade já tenho esses valores dentro da Tabela.

 

tabela qudados e o campo é dados.

 

Esses valores são gravados nessa tabela e preciso lstar os valores separados por tabela.

 

 

a versão é SQL 2000.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ve se isso lhe ajuda:

 

SET NOCOUNT ON
create table #temp (campo varchar(50))

insert into #temp
select 'I;046994;09.002;1106.28'

DECLARE @ARRAY VARCHAR(8000), @DELIMITADOR VARCHAR(100), @S VARCHAR(8000)

-- VALORES PASSADOS PARA A VARIAVEL @ARRAY
-- SELECT @ARRAY = 'OLA ,TUDO BEM, MAIS OU MENOS, TRANQUILIS'
select @ARRAY = campo from #temp

-- SETANDO O DELIMITADOR
SELECT @DELIMITADOR = ';'

IF LEN(@ARRAY) > 0 SET @ARRAY = @ARRAY + @DELIMITADOR 
CREATE TABLE #ARRAY(ITEM_ARRAY VARCHAR(8000))

WHILE LEN(@ARRAY) > 0
BEGIN
   SELECT @S = LTRIM(SUBSTRING(@ARRAY, 1, CHARINDEX(@DELIMITADOR, @ARRAY) - 1))
   INSERT INTO #ARRAY (ITEM_ARRAY) VALUES (@S)
   SELECT @ARRAY = SUBSTRING(@ARRAY, CHARINDEX(@DELIMITADOR, @ARRAY) + 1, LEN(@ARRAY))
END

-- MOSTRANDO O RESULTADO JÁ POPULADO NA TABELA TEMPORÁRIA
SELECT * FROM #ARRAY
DROP TABLE #ARRAY

SET NOCOUNT OFF

drop table #temp

fonte:

http://forum.imasters.com.br/index.php?showtopic=223852

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

ve se isso lhe ajuda:

 

SET NOCOUNT ON
create table #temp (campo varchar(50))

insert into #temp
select 'I;046994;09.002;1106.28'

DECLARE @ARRAY VARCHAR(8000), @DELIMITADOR VARCHAR(100), @S VARCHAR(8000)

-- VALORES PASSADOS PARA A VARIAVEL @ARRAY
-- SELECT @ARRAY = 'OLA ,TUDO BEM, MAIS OU MENOS, TRANQUILIS'
select @ARRAY = campo from #temp

-- SETANDO O DELIMITADOR
SELECT @DELIMITADOR = ';'

IF LEN(@ARRAY) > 0 SET @ARRAY = @ARRAY + @DELIMITADOR 
CREATE TABLE #ARRAY(ITEM_ARRAY VARCHAR(8000))

WHILE LEN(@ARRAY) > 0
BEGIN
   SELECT @S = LTRIM(SUBSTRING(@ARRAY, 1, CHARINDEX(@DELIMITADOR, @ARRAY) - 1))
   INSERT INTO #ARRAY (ITEM_ARRAY) VALUES (@S)
   SELECT @ARRAY = SUBSTRING(@ARRAY, CHARINDEX(@DELIMITADOR, @ARRAY) + 1, LEN(@ARRAY))
END

-- MOSTRANDO O RESULTADO JÁ POPULADO NA TABELA TEMPORÁRIA
SELECT * FROM #ARRAY
DROP TABLE #ARRAY

SET NOCOUNT OFF

drop table #temp

fonte:

http://forum.imasters.com.br/index.php?showtopic=223852

 

Abçs

 

jus2Ka,

 

Ajudou sim, eu preciso na verdade distribuir em colunas e não em linhas, mais já tenho idéia de como desenvolver.

 

estarei usando tabela temporária para isso, assim que encontar a solução final vou colocar.

 

 

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.