Как работать с (возможно) нулевыми значениями в PreparedStatement?

Оператор

SELECT * FROM tableA WHERE x = ?

и параметр вставляется через java.sql.PreparedStatement 'stmt'

stmt.setString(1, y); // y may be null

If y имеет значение NULL, оператор не возвращает строк в каждом случае, потому что x = null всегда ложно (должно быть x IS NULL ). Одно из решений было бы

SELECT * FROM tableA WHERE x = ? OR (x IS NULL AND ? IS NULL)

Но тогда мне нужно установить один и тот же параметр дважды. Есть ли лучшее решение?

Спасибо!

46
задан aioobe 18 November 2010 в 13:56
поделиться