Không có gì là = NULL
. Nếu bạn nhập select * from test where value=NULL
trở thành người đánh giá truy vấn tương tác, bạn sẽ không nhận lại được gì. JDBC không viết lại biểu thức của bạn, nó chỉ thay thế các giá trị.
Bạn phải sử dụng truy vấn bằng is
toán tử thay thế:
PreparedStatement select = c.prepareStatement("select * from test where value is NULL");
return select.executeQuery();
Bạn đã nói rằng bạn mong đợi JDBC đủ "thông minh" để làm điều đó cho bạn, nhưng điều đó sẽ vi phạm lớn trong việc tách biệt các mối quan tâm. Bạn cũng có thể muốn để có một tham số trong truy vấn của bạn bằng cách sử dụng =
mà bạn đặt NULL
biết rằng mối quan hệ đó sẽ không bao giờ đánh giá true (rất có thể là một phần của tập hợp các điều kiện lớn hơn).