Принятое решение не работало для меня в Oracle в некоторых случаях, когда оно было частью более крупного выражения, включающего
ждение
SELECT * FROM tableA WHERE x = ?
и параметр вставляется через java.sql.PreparedStatement 'stmt'
stmt.setString(1, y); // y may be null
Еслиy
является нулевым, оператор не возвращает строк в каждом случае, потому чтоx = null
всегда ложно (должно бытьx IS NULL
). Одним из решений будет
SELECT * FROM tableA WHERE x = ? OR (x IS NULL AND ? IS NULL)
Но тогда я должен установить один и тот же параметр дважды. Есть ли лучшее решение?
Спасибо!