Ir para conteúdo

POWERED BY:

Arquivado

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

Bruno Roberto Gomes

Pesquisar usando IN

Recommended Posts

Pessoal, tenho em uma tabela um campo TEXT que armazena os códigos de uma outra tabela separados por vírgula. Exemplo: "48,78,142,195,210".

 

Como faço para retornar os registro da outra tabela usando esse campo dentro da cláusula IN?

 

Estou fazendo assim:

 

SELECT T2.*

FROM TABELA2 AS T2, TABELA1 AS T1

WHERE T1.CODIGO IN (T2.CODIGOS)

 

Está dando erro de conversão. O campo CODIGO da TABELA1 é int.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um Exemplo , veja se ajuda ...

SELECT *
FROM   CLIENTES
WHERE  CLIENTES.UF IN (SELECT UF
                       FROM   UFS
                       WHERE  REGIAO = 'SUDESTE')

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um Exemplo , veja se ajuda ...

SELECT *
FROM   CLIENTES
WHERE  CLIENTES.UF IN (SELECT UF
                       FROM   UFS
                       WHERE  REGIAO = 'SUDESTE')

Eu entendi a sua instrução. O problema é que, no meu caso, os códigos não estão cada um dentro de um registro. Eles estão dentro um único registro, mas separados por vírgula (25,48,154,268,314).

 

Essa comparação está dando conflito de tipos de dados, já que o primeiro campo é int e o segundo é text (tem que ser text pq tem as vírgulas).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho o mesmo problema no Oracle, descrobi uma solução criando um tipo e fazendo um CAST para o formato de tabela , mas fica muito lento.

 

Outra solução é fazer um instr do código na string 25,48,154,268,314 mas isto é perigoso pois requer um certo padrão na codifificação, pois

se o código for '31' por exemplo, retornaria verdadeiro no exemplo em questão, o que está errado.

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.