Принятое решение не работало для меня в 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)

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

Спасибо!

Ответы на вопрос(5)

Ваш ответ на вопрос