如何在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

回到顶部