Java PreparedStatement设置NULL参数

时间:2019-05-15 11:11:09

标签: java oracle jdbc

Java PreparedStatement允许您为给定参数设置值或将其设置为NULL

SELECT *
FROM ADDRESS
WHERE ADDRESS_LINE1 = ? 

所以我们可以编写代码来设置此参数:

 if (addressLine1 != null) {
      preparedStatement.setString(1, addressLine1);
    } else {
      preparedStatement.setNull(1, VARCHAR);
    }

但是,它也声明您永远不要使用=运算符将值与null进行比较,而实际上将IS运算符用于null比较。

准备好的语句实际上是在这里为IS交换了=运算符还是IS,还是只是使用=运算符插入了null?如果是后者,那么什么时候使用它才有用呢?您实际上得到了预期的结果吗?

我在下面的堆栈溢出问题的后面问这个问题

SQL is null and = null

1 个答案:

答案 0 :(得分:2)

否,准备好的语句未将=换成IS。您的代码对此负责。就像您将负责使用字面意义上的使用something = NULL而不是something IS NULL进行查询一样。

能够将其设置为null的目的是用于例如update或insert语句,或者在您正确使用isis distinct from的情况下。

它也可用于空条件检查,例如where ? is null or something = ?

String something = "xyz"; // or String something = null;
statement.setString(1, something);
statement.setString(2, something);