sql >> Base de Datos >  >> RDS >> PostgreSQL

JDBC:seleccione dónde la columna es NULL

Nada es = NULL . Si escribió select * from test where value=NULL en un evaluador de consultas interactivo, no obtendrá nada a cambio. JDBC no reescribe su expresión, simplemente sustituye los valores.

Tienes que usar una consulta usando el is operador en su lugar:

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

Ha dicho que espera que JDBC sea lo suficientemente "inteligente" para hacer eso por usted, pero eso sería una gran violación de la separación de intereses. Es posible que quiera tener un parámetro en su consulta usando = que configuraste NULL sabiendo que esa relación nunca se evaluará como verdadera (lo más probable es que sea parte de un conjunto más amplio de condiciones).