SELECTによるJSONデータの取得

Teradata® Database JSONデータ型

brand
Software
prodname
Teradata Database
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1150-162K-JPN

SELECT文を使用すると、JSON列からデータを抽出できます。

フィールド モードでは、JSONのメソッドの1つを使用してフィルタ処理される場合も含めて、SELECTの結果は常に文字列です。

文字列が必要とする形式ではない場合、それを表わす適切なデータ型に結果セットをキャストする必要があります。

非フィールド モードでは、クライアントにJSON型が返されます。

BSONまたはUBJSONとして格納されているJSON列からデータを取得すると、常にデータはテキスト形式に変換されます。

SELECT文のORDER BY句、HAVING句、またはGROUP BY句にJSON列を含めることはできません。

SELECT句またはWHERE句で、列参照またはJSON型に評価される式の最後にJSONエンティティ参照を追加できます。

SELECT文の設定の例

後の例で使用するテーブルを作成して、データを取り込みます。

CREATE TABLE my_table (eno INTEGER, edata JSON(100)); 

INSERT INTO my_table (1, NEW JSON('{"name" : "Cameron", "phoneNumber" : 8584852612}'));
INSERT INTO my_table (2, NEW JSON('{"name" : "Justin", "phoneNumber" : 8584852611}'));

SELECT edata FROM my_table;

結果:

'{"name" : "Justin", "phoneNumber" : 8584852611}'
'{"name" : "Cameron", "phoneNumber" : 8584852612}'

例: SELECT文によるJSONデータの抽出

この例では、JSONExtractValueメソッドを使用して、名前がCameronのデータを抽出します。

SELECT eno, edata 
FROM my_table 
WHERE edata.JSONExtractValue('$.name') = 'Cameron' 
ORDER BY 1;

結果:

eno edata
--------
1   '{"name" : "Cameron", "phoneNumber" : 8584852612}'