PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

JDBC - Wählen Sie aus, wo die Spalte NULL ist

Nichts ist = NULL . Wenn Sie select * from test where value=NULL eingegeben haben in einen interaktiven Abfrageauswerter, würden Sie nichts zurückbekommen. JDBC schreibt Ihren Ausdruck nicht neu, es ersetzt nur die Werte.

Sie müssen eine Abfrage mit is verwenden Operator stattdessen:

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

Sie haben gesagt, dass Sie erwarten, dass JDBC "klug" genug ist, dies für Sie zu tun, aber das wäre ein großer Verstoß gegen die Trennung von Anliegen. Sie können wollen um einen Parameter in Ihrer Abfrage mit = zu haben die Sie NULL setzen wissend, dass diese Beziehung niemals als wahr bewertet wird (höchstwahrscheinlich als Teil einer größeren Menge von Bedingungen).