JSON列の変更の例 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - JSONデータ型

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年9月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/gzn1554761068186.ditamap
dita:ditavalPath
ja-JP/gzn1554761068186.ditaval
dita:id
evi1472243742653
Product Category
Software
Teradata Vantage

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}