基于列更新数据为null或不为null

时间:2015-07-17 14:48:23

标签: sql oracle

我根据列是空还是空来更新列上的表。 if null然后将直接获取任何数据。如果不是null意味着它将采用现有的当前数据+新数据。我正在使用解码它正常工作。 但是当'clob'无效时,列数据类型。实现这一目标的另一种选择。

代表       ID数据

  11   ab
  15   null

现在,如果我想要id 11的upate数据,它应该是旧数据+新数据,即ab:cd :这要分开新旧 不,如果我想更新id 15的数据,它应该只有新数据,即= ef

 UPDATE TESTING 
 SET DATA = decode( DATA ,null,'CONFIRM',DATA||sysdate||'test' ) 
 WHERE  ID=15;

其中数据是列检查。可以请任何人在clob数据类型中指导如何执行此操作。

2 个答案:

答案 0 :(得分:0)

使用Case语句。这只是一个伪代码

 UPDATE TESTING 
 SET DATA = Case when DATA IS NULL then direct any data 
                 Else existing then current data + new data 
            End
 WHERE  ID=15;

答案 1 :(得分:0)

您可以使用NVL2功能:

UPDATE TESTING
 SET DATA = NVL2( DATA, DATA||sysdate||'test', 'CONFIRM' )
 WHERE  ID=15;