如何更新oracle sql列中已存在的值

如何更新oracle sql列中已存在的值,sql,oracle,Sql,Oracle,我试图就我的问题找到可能的解决办法,但没有成功。假设我有一个包含许多记录的测试表,其中一列称为CA_组。该列包含以下值: {"TEST1":"1","TEST2":"2"} 我想将这部分“,“TEST3”:“3”添加到该列中已经存在的值中。因此,结果应该是: {"TEST1":"1","TEST2":"2","TEST3":"3"} 我唯一知道的是: update test t set t.ca_group = replace(t.ca:group, '{"TEST1":"1","TEST

我试图就我的问题找到可能的解决办法,但没有成功。假设我有一个包含许多记录的测试表,其中一列称为CA_组。该列包含以下值:

{"TEST1":"1","TEST2":"2"}
我想将这部分“,“TEST3”:“3”添加到该列中已经存在的值中。因此,结果应该是:

{"TEST1":"1","TEST2":"2","TEST3":"3"}
我唯一知道的是:

update test t 
set t.ca_group = replace(t.ca:group, '{"TEST1":"1","TEST2":"2"}'
   , '{"TEST1":"1","TEST2":"2","TEST3":"3"}') 
where id = xxxxxx 
and other conditions.

update test t 
set t.ca_group = replace (t.ca:group, '{"CODE1":"1","CODE2":"2"}'
    , '{"CODE1":"1","CODE2":"2","TEST3":"3"}') 
where id = xxxxxx 
and other conditions.

但这对我来说效率不高,因为我有很多记录,需要在所有列中逐个添加相同的值。有什么最聪明的方法可以做到这一点吗?

将“TEST3”附加到每个现有值上如何

update test t 
set t.ca_group = substr(t.ca_group, 1, length(t.ca_group) - 1) || ',"TEST3":"3"}'
where id = xxxxxx

这不是使用关系数据库的正确方法。这就是为什么关系数据库表有“列”!那么这实际上是JSON文档还是符号只是巧合?
+
在Oracle中不是有效的字符串连接符。使用
|
。另外,
substr()
需要一个起始偏移量。