日期:2014-05-17  浏览次数:20886 次

oracle sql 条件为空则不考虑更新
各位好:
  我现在有一需求,传入固定的列数,其中列的值为null则整列的值保持原有的值不变.

1.比如 现有表 select A,B,C,D,E From test 显示如下:

good,better,bad,perfect,ok

2. 现在一动态一维数据(No,null,Y,Y)传为修改表test的参数,如果传入的参数有null的值则对应字段的值保持不变.

要实现的效果如 update test set B='No',D='Y',E='Y' where A='good'

请问怎么实现以上类似的效果?

在线等!先谢谢了!

oracle?sql?条件为空

------解决方案--------------------
update test set B=decode(p1,null,B,p1),C=decode(p2,null,C,p2),D=decode(p3,null,D,p3),E=decode(p4,null,E,p4) where A='good'

p1,p2,p3,p4为传入的值。
------解决方案--------------------
update test set B=nvl(p1,B),C=nvl(p2,C),D=nvl(p3,D),E=nvl(p4,E) where A='good'