Updateの例の設定
後の例で使用するテーブルを作成して、データを取り込みます。
CREATE TABLE my_table (eno INTEGER, edata JSON(100));
INSERT INTO my_table (1, NEW JSON('{"name" : "Cameron", "age" : 24}'));
例: UPDATEとSET
次の文は、edata列値を設定しテーブルを更新します。
UPDATE my_table
SET edata = NEW JSON('{"name" : "Justin"}')
WHERE edata.JSONExtractValue('$.name') = 'Cameron';
結果: 結果を確認するには、次を実行します: SELECT edata FROM my_table;
edata
-----
{"name" : "Justin"}
例:UPDATE列の値
次の文は、edata列値を設定しテーブルを更新します。
UPDATE my_table
SET edata = '{"name" : "George"}';
結果: 更新された名前を表示するには、次を実行します: SELECT edata FROM my_table;
edata
-----
{"name" : "George"}
Mergeの例の設定
後の例で使用するテーブルを作成して、データを取り込みます。
CREATE TABLE my_table (eno INTEGER, edata JSON(100));
INSERT INTO my_table(1,'{"name" : "Justin", "phoneNumber" : 9595552611}');
INSERT INTO my_table(2,'{"name" : "Cameron", "phoneNumber" : 9595552612}');
CREATE TABLE my_table2 (eno INTEGER, edata JSON(100));
INSERT INTO my_table2(1,'{"age":24}');
INSERT INTO my_table2(3,'{"age":34}');
例: MERGE WHEN MATCHED THEN UPDATE
以下の例では、MERGE WHEN MATCHED THEN UPDATE句を使用する方法を示します。
MERGE INTO my_table
USING (SELECT eno, edata FROM my_table2) AS S(a,b)
ON eno = S.a AND
CAST (edata.JSONExtractValue('$.name') AS VARCHAR(20)) = 'Justin'
WHEN MATCHED THEN UPDATE
SET edata = '{"name" : "Kevin", "phoneNumber" : 9595552613}';
クエリーの結果を表示するには次を実行します: SELECT * FROM my_table ORDER BY eno;
eno edata
---------
1 {"name" : "Kevin", "phoneNumber" : 9595552613}
2 {"name" : "Cameron", "phoneNumber" : 9595552612}
例: MERGE WHEN NOT MATCHED THEN INSERT
以下の例では、MERGE WHEN NOT MATCHED THEN INSERT句を使用する方法を示します。
MERGE INTO my_table
USING (SELECT eno, edata FROM my_table2) AS S(a,b)
ON eno = S.a AND
CAST (edata.JSONExtractValue('$.name') AS VARCHAR(20)) = 'Mike'
WHEN NOT MATCHED THEN INSERT (eno, edata)
VALUES (S.a, NEW JSON('{"name" : "Mike", "phoneNumber" : 9595552614}'));
クエリーの結果を表示するには次を実行します: SELECT * FROM my_table ORDER BY eno;
eno edata
-----------
1 {"name" : "Kevin", "phoneNumber" : 9595552613}
2 {"name" : "Cameron", "phoneNumber" : 9595552612}
2 {"name" : "Mike", "phoneNumber" : 9595552614}