Нищо не е = NULL
. Ако сте въвели select * from test where value=NULL
в интерактивен оценител на заявки, няма да получите нищо обратно. JDBC не пренаписва вашия израз, той просто замества стойностите.
Трябва да използвате заявка, използваща is
оператор вместо:
PreparedStatement select = c.prepareStatement("select * from test where value is NULL");
return select.executeQuery();
Казахте, че очаквате JDBC да бъде достатъчно „умен“, за да направи това вместо вас, но това би било голямо нарушение на разделянето на концерните. Може и да искате за да имате параметър във вашата заявка, като използвате =
който задавате NULL
знаейки, че тази връзка никога няма да се оцени като истина (най-вероятно като част от по-голям набор от условия).