【问题标题】:How can I append to an existing record?如何追加到现有记录?
【发布时间】:2015-04-06 22:37:20
【问题描述】:

我在名为notes 的架构中有一个列。它包含每次更新记录时都应该更新的修订注释。如何在不覆盖的情况下将数据附加到现有条目?

例如目前显示:

“09022014,更新了用户的 GSDA ID。”

运行查询后,我想查看:

"09022014,更新了用户的 GSDA ID。04062015,更新了 TTFIA 构建 字段。”

【问题讨论】:

    标签: sql oracle oracle11g


    【解决方案1】:

    将新注释与当前注释连接 (||):

    update tablename set notes = notes || " new note"
    where id = 123;
    

    哦,别忘了正则表达式:

    update tablename set notes = 
    regexp_replace('notes', '^(.*)$', '\1' || ' note 2')
    where id = 123;
    

    这揭示了使用 regexp_replace 的意外结果,如果您有兴趣,我在此询问:Explain unexpected regexp_replace result

    【讨论】:

      【解决方案2】:

      使用连接运算符||将现有列值与新值连接

      “09022014,更新了用户的 GSDA ID。04062015,更新了 TTFIA 构建字段。”

      如果您的值本身带有双引号,那么您需要注意另外一件事情,即 TRIM 双引号 在现有列值的右侧。

      当然,您需要在现有值和新值之间保留一个空格。

      例如,

      UPDATE table_name 
         SET notes = rtrim(notes, '"') || ' ' || new_note || '"';
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-04-08
        • 2014-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-02
        相关资源
        最近更新 更多