2017-03-17 67 views
0

我試圖在我的問題上找到可能的解決方案,但沒有成功。假設我有一個包含許多記錄的測試表,其中一列稱爲CA_GROUP。這列包含以下值:如何更新oracle sql列中已經存在的值

{"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. 

但是,這不是有效的適合我,因爲我有很多的記錄,我需要添加所有列中的值相同。有沒有最聰明的方法來做到這一點?

+2

這只是不正確的方式來使用關係數據庫。這就是爲什麼關係數據庫表具有「列」! – BobC

+0

所以這實際上是JSON文檔還是隻是符號的符號? – APC

回答

0

如何將'TEST3'附加到每個現有值?

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

'+'在Oracle中不是有效的字符串連接器。使用'||'。另外,'substr()'需要一個起始偏移量。 – APC

+0

感謝您的編輯 – paul

0

哇,真的有幫助 - 這正是我所需要的。非常感謝這個完美的答案

相關問題