java - IS NULL 条件下的 JDBC 错误

标签 java sql postgresql scala jdbc

我正在使用 ScalikeJDBC 库从 Scala 使用 JDBC。

让我们做一个简单的查询:UPDATE "test_table"SET "test"= 1234 WHERE ("asdad"is null)

如果我将此查询直接传递给 psql 或通过 JDBC 原始执行它,一切正常。但是,如果我尝试将 null 作为参数传递,则会出现以下错误:org.postgresql.util.PSQLException: ERROR: syntax error at or near "$1"

我像这样传递 null 值:

session.update("""UPDATE "test_table" SET "test" = 1234 WHERE ("asdad" is ?)""", null)

? 占位符被 ScalikeJDBC 库自动转换为 $1。执行的查询显示在 Scala 控制台中:

   UPDATE "test_table" SET "test" = 1234 WHERE ("asdad" is null)  

谢谢!

最佳答案

之后不允许有参数。您必须将 IS NULLIS NOT NULL 编写为固定表达式。

允许的是 = $1,然后将此占位符设置为 null,但这不会产生您期望的与 NULL< 比较的结果 总是未知

查看相关问题:

Why does NULL = NULL evaluate to false in SQL server

Is there any difference between IS NULL and =NULL

关于java - IS NULL 条件下的 JDBC 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24934243/

相关文章:

java - Jar 找不到主类

postgresql - 为什么 `IF` 子句在 postgres `CHECK` 约束中是不可能的?

SQL:如何在不使用函数的情况下从表中获取上一个日期

java - 'if' 中的初始值并在代码错误中使用它

java - 不显示div内容

java - 如何禁用 gson 中的字符编码?

sql - 检查 Postgres 上的外部表所有者

mysql - 编写 SQL 更新语句

java - 如何以良好的性能将大量数据从一个 Oracle 数据库复制到另一个数据库

mysql - 如何使用三个表进行左连接?mysql