我有一个 update SQL 语句来更新一行
UPDATE COM_TRANSACTION_LOGS
SET END_TIME = ?,
RESPONSE = ?
WHERE
TRANSACTION_ID = ?
AND
MESSAGE_ID = ?
这里的问题是 MESSAGE_ID
在某些情况下可以为空,因此更新 SQL 为
[DEBUG] {pstm-100101} Parameters:[2013-05-14 10:38:01.485, XML, 123XYZAAA1236511, null]
更新失败,因为 where 子句变成了
WHERE
TRANSACTION_ID = '123XYZAAA1236511'
AND
MESSAGE_ID = null
如何通过准备好的语句与空值进行比较。
我知道 null 比较的 where 子句必须像这样
WHERE
TRANSACTION_ID = '123XYZAAA1236511'
AND
MESSAGE_ID is null
我如何告诉准备好的语句将 where 子句设置为 is null
而不使用两个查询并在 null
或 =' 的情况下有条件地使用它们一些值
最佳答案
你可以替换这一行:
MESSAGE_ID = ?
由此:
COALESCE(MESSAGE_ID,-1) = COALESCE(?,-1)
关于java - 当 where 子句条件可以为 null 时更新 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16546883/