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}