1
我需要一个查询来更新一个字段。如果传递的参数为null,不与参数有条件地更新一个字段的情况下参数不为空
update myTable
set myField1 = :param1
环境的空值更新:休眠和Oracle
我需要一个查询来更新一个字段。如果传递的参数为null,不与参数有条件地更新一个字段的情况下参数不为空
update myTable
set myField1 = :param1
环境的空值更新:休眠和Oracle
你就不能把它放在那里where子句?
update myTable
set myField1 = :param1
where :param1 is not null
这将避免额外的DML。或者你可以这样做:
update myTable
set myField1 = decode(:param1, null, myField1, :param)
但是,这意味着你将更新字段相同的,当你不必是不是真正的最佳。
我认为解码功能是我需要的 谢谢 – geo 2012-01-27 12:16:50
@geo - 我推荐第一个版本。除此之外:param1和:param应该是相同的参数... – MatBailie 2012-01-27 12:31:38
@Dems,被抓住了!我已经更新了它。我认为geo的选择有更多的列正在更新,这意味着第二个查询是正确的... – Ben 2012-01-27 13:38:32