如何附加到现有记录?

时间:2015-04-06 13:47:49

标签: sql oracle oracle11g

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

例如,目前显示:

  

" 09022014,更新了用户的GSDA ID。"

运行查询后,我希望看到:

  

" 09022014,更新了用户的GSDA ID。 04062015,更新了TTFIA大楼   。字段"

2 个答案:

答案 0 :(得分:2)

使用当前音符连接(||)新音符:

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

答案 1 :(得分:1)

使用连接运算符 ||

连接现有列值和新值。

  

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

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

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

例如,

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