如何在PreparedStatement中处理(也许)空值?
该声明是
SELECT * FROM tableA WHERE x = ?
并通过java.sql.PreparedStatement’stmt’插入参数
stmt.setString(1, y); // y may be null
如果y
为null,则在每种情况下该语句均不返回任何行,因为x = null
它始终为false(应为x IS NULL
)。一种解决方案是
SELECT * FROM tableA WHERE x = ? OR (x IS NULL AND ? IS NULL)
但是然后我必须两次设置相同的参数。有更好的解决方案吗?
谢谢!
回答:
我一直按照您在问题中所表现的方式来做。两次设置相同的参数不是很大的困难,不是吗?
SELECT * FROM tableA WHERE x = ? OR (x IS NULL AND ? IS NULL);
以上是 如何在PreparedStatement中处理(也许)空值? 的全部内容, 来源链接: utcz.com/qa/398177.html