PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

JDBC - sélectionnez où la colonne est NULL

Rien n'est = NULL . Si vous avez tapé select * from test where value=NULL dans un évaluateur de requêtes interactif, vous n'obtiendrez rien en retour. JDBC ne réécrit pas votre expression, il remplace simplement les valeurs.

Vous devez utiliser une requête en utilisant le is opérateur à la place :

PreparedStatement select = c.prepareStatement("select * from test where value is NULL");
return select.executeQuery();

Vous avez dit que vous vous attendiez à ce que JDBC soit suffisamment "intelligent" pour le faire pour vous, mais ce serait une grave violation de la séparation des préoccupations. Vous pourriez bien vouloir pour avoir un paramètre dans votre requête en utilisant = que vous définissez NULL sachant que cette relation ne sera jamais évaluée comme vraie (dans le cadre d'un ensemble plus large de conditions, très probablement).