Ir para conteúdo

Arquivado

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

M@tos

[Resolvido] Quebra de Linha utilizando o Oracle

Recommended Posts

Tenho uma consulta que me retorna um resultado como o abaixo

Exemplo:

 

Id	produto
1 	2,3
2	4
3	5,6

 

Usando um select semelhante a consulta abaixo:

 

select a.id, b.produto
from tabela A
Inner join tabela b on a.id=b.id

 

Mas eu gostaria que o resultado me retornasse como o exemplo abaixo:

[code
]Id produto
1 2
1 3
2 4
3 5
3 6
[/code]

 

Alguém pode me ajudar?

 

Fico no aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Publique a descrição da tabela e como os dados estão gravados.

 

Se estão gravados assim com vírgula dará um trabalho danado obter os dados da forma que se quer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Publique a descrição da tabela e como os dados estão gravados.

 

Se estão gravados assim com vírgula dará um trabalho danado obter os dados da forma que se quer.

 

 

 

Os dados do campo em questão (Tabela b) é um campo varchar2, cujo os dados foram gravados conforme consta no primeiro exemplo de visualização citado. Eles foram salvos com uma vírgula entre os valores. Em uma consulta é possível trazer o id da tabela a com o campo da tabela b, retirando a vírgula ou é preciso uma function? Como ficariaa em ambos os casos?

 

Necessita de mais alguma informção?

 

Agradeço desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se quer um conselho normalize esta tabela.

 

Para obter os dados em forma de tabela até dá mas dará trabalho.

Uma solução é montar uma tabela virtual em memória e usando CAST ler isto como tabela.

 

Mas insisto, normalize esta tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se quer um conselho normalize esta tabela.

 

Para obter os dados em forma de tabela até dá mas dará trabalho.

Uma solução é montar uma tabela virtual em memória e usando CAST ler isto como tabela.

 

Mas insisto, normalize esta tabela.

 

 

Não é possível a normalização desta tabela, pois a mesma pertence ao banco de dados de um cliente e o mesmo necessita que as informações sejam assim armazenadas, porém eles desejam esse tipo de consulta no momento.

Além do fato da tabela possuir muitos registros.

 

Agradeço a ajuda.

Estarei dando uma olhada no site indicado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

ok.

Obrigada.

Um de meus colegas de trabalho encontrou uma função 'regexp_substr', nos levando ao resultado esperado.

 

 

conforme o exemplo abaixo:

 

SELECT regexp_substr('1234,5678,890','[^,]+', 1, LEVEL) FROM dual

connect by regexp_substr('1234,5678,890', '[^,]+', 1, level) is not null;

 

Até mais.

Obrigada pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não conhecia esta funcção, a gente acha que sabe e se surpreende sempre ...

 

:clap:

Compartilhar este post


Link para o post
Compartilhar em outros sites

hoje precisei usar esta função , migrar dados enviados neste formato (separado por vírgulas)

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.