[英]Oracle Update data in Clob datatype column
我對 Oracle 和 Clob 數據類型非常陌生。
我們有一個名為 ABC 的表,其中有一列 CLOB 數據類型。
Clob 列“MyClob”具有以下文本數據:
{ "UD_1":"John", "UD_2":"Doe", "UD_3":"1011=John Doe"}
當我使用以下查詢查詢表“ABC”時,
Select Id,
JSON_VALUE(MyClob, '$.UD_1') FirstName
JSON_VALUE(MyClob, '$.UD_2') LastName
JSON_VALUE(MyClob, '$.UD_3') Status
From Abc
我得到下表:
Id FirstName LastName Status
1 John Doe 1011=John Doe
2 Jack Ham 2022=Jack Ham
我只想更新其中一行的“UD_3”值。 我不確定如何編寫更新查詢來更新 Clob 列中的文本。
您可以使用JSON_MERGEPATCH對 JSON 執行更新。 要使用JSON_MERGEPATCH
,在第二個參數中,您需要傳遞要更新的鍵/值對的 JSON object 。 請參見下面的示例。
還有一點需要注意的是,JSON_MERGEPATCH 的返回值會從JSON_MERGEPATCH
中刪除任何不必要的空格。
SQL> CREATE TABLE sampletable
2 (
3 id,
4 myclob
5 )
6 AS
7 SELECT 1,
8 EMPTY_CLOB ()
9 || '{ "UD_1":"John", "UD_2":"Doe", "UD_3":"1011=John Doe"}'
10 FROM DUAL
11 UNION ALL
12 SELECT 2,
13 EMPTY_CLOB ()
14 || '{ "UD_1":"Jack", "UD_2":"Ham", "UD_3":"2022=Jack Ham"}'
15* FROM DUAL;
Table SAMPLETABLE created.
SQL> SELECT *
2 FROM sampletable t
3 CROSS JOIN
4 JSON_TABLE (
5 t.myclob,
6 '$'
7 COLUMNS (firstname VARCHAR2 PATH '$.UD_1',
8 lastname VARCHAR2 PATH '$.UD_2',
9* status VARCHAR2 PATH '$.UD_3'));
ID MYCLOB FIRSTNAME LASTNAME STATUS
_____ _________________________________________________________ ____________ ___________ ________________
1 { "UD_1":"John", "UD_2":"Doe", "UD_3":"1011=John Doe"} John Doe 1011=John Doe
2 { "UD_1":"Jack", "UD_2":"Ham", "UD_3":"2022=Jack Ham"} Jack Ham 2022=Jack Ham
SQL> UPDATE sampletable
2 SET myclob = json_mergepatch (myclob, '{"UD_3":"3033-Devp"}')
3* WHERE id = 1;
1 row updated.
SQL> commit;
Commit complete.
SQL> SELECT *
2 FROM sampletable t
3 CROSS JOIN
4 JSON_TABLE (
5 t.myclob,
6 '$'
7 COLUMNS (firstname VARCHAR2 PATH '$.UD_1',
8 lastname VARCHAR2 PATH '$.UD_2',
9* status VARCHAR2 PATH '$.UD_3'));
ID MYCLOB FIRSTNAME LASTNAME STATUS
_____ _________________________________________________________ ____________ ___________ ________________
1 {"UD_1":"John","UD_2":"Doe","UD_3":"3033-Devp"} John Doe 3033-Devp
2 { "UD_1":"Jack", "UD_2":"Ham", "UD_3":"2022=Jack Ham"} Jack Ham 2022=Jack Ham
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.