【问题标题】:Talend-Oracle: Increment field of selected one rowTalend-Oracle:选定行的增量字段
【发布时间】:2015-04-17 15:11:21
【问题描述】:

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

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

最初,所有文件的状态为“检测到”,因此它们尚未导入并且导入尝试编号为 0,我想为每次导入尝试增加尝试编号,显而易见的解决方案是通过选择获取当前的“try_nmber”语句增加它并用新的更新表,但是查询会很丑:

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 找到任何智能解决方案来增加选定行的字段而不检索当前值,有什么想法吗?

【问题讨论】:

    标签: sql oracle talend


    【解决方案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 的实体。

    NVL 将 TRY_NUMBER 转换为 0,以防 TRY_NUMBER 为 NULL。

    【讨论】:

    • 谢谢,我不知道在 Oracle 中 try_number=try_number+1 是可以接受的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多