我在名为notes
的架构中有一个列。它包含每次更新记录时应更新的修订说明。如何在不覆盖的情况下将数据附加到现有条目?
例如,目前显示:
" 09022014,更新了用户的GSDA ID。"
运行查询后,我希望看到:
" 09022014,更新了用户的GSDA ID。 04062015,更新了TTFIA大楼 。字段"
答案 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 || '"';