Talend-Oracle:所选行的增量字段

时间:2015-04-17 15:11:22

标签: sql oracle talend

我有一个导入文件并登录到Oracle数据库的talend作业,日志表架构是这样的(没有id):

 filename | staus  | try_number
 -----------------------------
 f1       |imorted |    1 
 f2       |detected|    0
 f3       |detected|    3

最初,所有文件都有状态"检测到",所以它们还没有导入,导入尝试次数为0,我想增加每个导入尝试的尝试次数,显而易见的解决方案是获取当前" try_nmber"通过select语句增加它并用新的表更新表,但查询将非常难看:

update mytable set
try_number = (select try_number from mytable where
              field1= value1 and
              field2= value2 and
              filed3= value3)
              +1
where         field1= value1 and
              field2= value2 and
              filed3= value3

我无法通过Talend或Oracle找到任何智能解决方案来增加所选行的字段而不检索当前值,任何想法?

1 个答案:

答案 0 :(得分:1)

试试这个:

UPDATE   MYTABLE
   SET   TRY_NUMBER = NVL (TRY_NUMBER, 0) + 1
 WHERE   FIELD1 = VALUE1 AND FIELD2 = VALUE2 AND FILED3 = VALUE3;

NVL用于处理TRY_NUMBER为NULL的情况。

由于Oracle中的NULL + 1 = NULL,我们必须在一个实体中转换NULL,您可以将其与1返回1相加。

如果TRY_NUMBER为NULL,NVL会将TRY_NUMBER转换为0。