PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

JDBC - seleziona dove la colonna è NULL

Niente è = NULL . Se hai digitato select * from test where value=NULL in un valutatore di query interattivo, non otterresti nulla in cambio. JDBC non riscrive la tua espressione, si limita a sostituire i valori.

Devi usare una query usando is operatore invece:

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

Hai detto che ti aspetti che JDBC sia abbastanza "intelligente" da farlo per te, ma sarebbe una grave violazione della separazione delle preoccupazioni. Potresti volere per avere un parametro nella tua query usando = che hai impostato NULL sapendo che quella relazione non verrà mai valutata vera (come parte di un insieme più ampio di condizioni, molto probabilmente).