声明是
SELECT * FROM tableA WHERE x = ?
Run Code Online (Sandbox Code Playgroud)
并通过java.sql.PreparedStatement'stmt'插入参数
stmt.setString(1, y); // y may be null
Run Code Online (Sandbox Code Playgroud)
如果y为null,则语句在每种情况下都不返回任何行,因为x = null它始终为false(应该是x IS NULL).一个解决方案是
SELECT * FROM tableA WHERE x = ? OR (x IS NULL AND ? IS NULL)
Run Code Online (Sandbox Code Playgroud)
但后来我必须设置两次相同的参数.有更好的解决方案吗?
谢谢!