例: TD_JSONSHRED - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - JSONデータ型

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/uwa1591040057999.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
evi1472243742653
Product Category
Software
Teradata Vantage

この例では、データベース テーブルに挿入されている2つの小さなJSONドキュメントのデータをシュレッドし、この関数によって返される派生テーブルの列で抽出されたデータを表示します。JSONドキュメントはVARCHARデータとして格納されますが、抽出されたデータの1つの列はDECIMALデータとして返されます。

CREATE TABLE ShreddedData (ID INTEGER, j VARCHAR(80));

INSERT INTO ShreddedData VALUES (1, '{"items":[{"name":"charger","price":12.99},{"name":"phone","price":599.99}]}');
INSERT INTO ShreddedData VALUES (2, '{"items":{"name":"laptop","price":999.99}}');

SELECT * FROM ShreddedData;

         ID  j
-----------  --------------------------------------------------------------------------------
          1  {"items":[{"name":"charger","price":12.99},{"name":"phone","price":599.99}]}
          2  {"items":{"name":"laptop","price":999.99}}

次にTD_JSONSHREDを使用して、JSONデータから派生データベース テーブルに名前と値を抽出します。

SELECT * FROM TD_JSONSHRED(
    ON (SELECT ID, j FROM ShreddedData)
    USING
    ROWEXPR('items')
    COLEXPR('name', 'price')
    RETURNTYPES('VARCHAR(20)', 'DECIMAL(10,2)')
) t;

以下に示す返される結果セットでは、ID列の値が、シュレッドされたデータがあった入力テーブル(つまり特定のJSONドキュメント)の行を特定することに注意してください。

         ID  name                         price
-----------  --------------------  ------------
          1  charger                      12.99
          1  phone                       599.99
          2  laptop                      999.99