有条件地更新case参数不为null的字段

geo*_*geo 1 sql oracle hibernate

我需要一个查询来更新一个字段.如果传递的参数为null,则不要使用参数的null值更新它

update myTable 
set myField1 = :param1
Run Code Online (Sandbox Code Playgroud)

环境:hibernate和oracle

Ben*_*Ben 5

你能不能把它放在哪里?

update myTable
   set myField1 = :param1
 where :param1 is not null
Run Code Online (Sandbox Code Playgroud)

那将避免额外的DML.或者你可以这样做:

update myTable
   set myField1 = decode(:param1, null, myField1, :param)
Run Code Online (Sandbox Code Playgroud)

但这意味着你会将一个字段更新为相同的字段,这在你不需要时并不是最佳选择.