PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

JDBC - selecione onde a coluna é NULL


Nada é = NULL . Se você digitou select * from test where value=NULL em um avaliador de consulta interativo, você não receberia nada de volta. O JDBC não reescreve sua expressão, apenas substitui os valores.

Você tem que usar uma consulta usando o is operador em vez disso:
PreparedStatement select = c.prepareStatement("select * from test where value is NULL");
return select.executeQuery();

Você disse que espera que o JDBC seja "inteligente" o suficiente para fazer isso por você, mas isso seria uma grande violação da separação de interesses. Você pode muito bem querer para ter um parâmetro em sua consulta usando = que você define NULL sabendo que essa relação nunca será avaliada como verdadeira (como parte de um conjunto maior de condições, provavelmente).