SELECTによるJSONデータの取得 - Teradata Database - Teradata Vantage NewSQL Engine - SELECT文を使用すると、JSON列からデータを抽出できます。

Teradata Vantage™ JSONデータ型

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/bgi1512081870828.ditamap
dita:ditavalPath
ja-JP/bgi1512081870828.ditaval
dita:id
evi1472243742653
Product Category
Software
Teradata Vantage

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}'