Comparar Campos nulls
14/05/2014
0
eu tenho uma tabela A com os dados
A-
1
2 Barcelos
3 Braga
4 Guimaraes
etc
e uma B
B-
1 Jose Braga
2 Luis Guimaraes
3 Rodrigo
4 Joaquim Barcelos
e queria fazer um select para ir buscar o id em vez do nome
resultado do select que preciso
1 Jose 3
2 Luis 4
3 Rodrigo 1 -> problema aqui nao compara null com null
4 Joaquim 2
com um left join retorno todas as linhas certas que nao sejam null mas as null fica vazio. nao consegue comparar.
Alguem sabe de alguma solucao? obrigado
Jose Alves
Posts
15/05/2014
Jair N.
Atc
15/05/2014
Jose Alves
15/05/2014
Jair N.
SELECT B.*, A.* FROM B LEFT JOIN A ON (B.nome LIKE '%' + A.nome) ORDER BY B.nome;
Isto para M.S.SQLServer o "+" funciona sim em teste o atributo "nome" é VARCHAR ok...
Atc.
15/05/2014
Jose Alves
mas mesmo assim substituí o + pelo concat
SELECT B.*, A.* FROM B LEFT JOIN A ON (B.nome LIKE CONCAT( '%' , A.nome)) ORDER BY B.nome
e continua a não dar.
nos registos que ele encontrava anteriormente está a duplicar metendo o id certo numa linha e o id do campo null noutra para todos os registos, menos nos registos que o texto é null , aí continua a nao meter nada
15/05/2014
Alex Lekao
Eu sugiro tratar os nulls antes das comparacoes.
Nao sei como faz o PostGree mas no SQL vc pode usar o isnull(campo,vazio) por exemplo e com isso ele substitui o que estiver com null pela palavra que vc colocou na ultima sentenca da sintaxe, assim vc consegue comparar.
Espero ter ajudado.
Abraco.
Alex - Lekao
16/05/2014
Jose Alves
Solucao final
SELECT B.id,B.nome,COALESCE ( A.id,A.id,//aqui é o valor que queremos meter caso seja null, no meu caso 1) FROM B LEFT JOIN A ON (B.nome LIKE A.nome) ORDER BY B.nome
16/05/2014
Alex Lekao
Entao resolveu.
Parabens!!!
Obrigado por postar a solucao.
Abraco.
Alex - Lekao
Clique aqui para fazer login e interagir na Comunidade :)