この例では、データベース テーブルに挿入されている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