Ingenting är = NULL
. Om du skrev select * from test where value=NULL
i en interaktiv frågeutvärderare skulle du inte få något tillbaka. JDBC skriver inte om ditt uttryck, det ersätter bara värdena.
Du måste använda en fråga med is
operatör istället:
PreparedStatement select = c.prepareStatement("select * from test where value is NULL");
return select.executeQuery();
Du har sagt att du förväntar dig att JDBC är tillräckligt "smart" för att göra det åt dig, men det skulle vara en stor kränkning av separationen av bekymmer. Du kanske vill att ha en parameter i din fråga med =
som du ställer in NULL
att veta att den relationen aldrig kommer att utvärderas sann (som en del av en större uppsättning villkor, troligen).