JSON_TABLE 表関数
JSON_TABLE ユーザー定義関数は、2 つの列を持つ表を返します。 最初の列は BSON タイプ、2 番目の列はストリング値です。
スキーマは SYSTOOLS です。
- injson
- バイナリー形式の JSON ドキュメント (拡張 BSON) を返す式。
- inelem
- 2048 バイト以下の文字ストリング定数またはグラフィック・ストリング定数。 inelem には、検索するパス修飾 JSON フィールド名が含まれます。
- retype
- 関数の結果の特性を指定する 32 バイト以下の文字ストリング定数。 rettypeにはデータ型指定を含める必要があります。JSON_VALスカラ関数をご覧ください。 この値には、大文字小文字の区別はありません。
関数の結果は、以下の表に示されている形式の表です。 列はすべて NULL 可能です。
| 列名 | データ・タイプ | Contains |
|---|---|---|
| タイプ | INTEGER | エレメントのタイプ。 |
| 価値 | VARCHAR(2048) | エレメントの値。 |
JSON_TABLEに関する注釈
- CCSIDルール
JSON_TABLE 関数は、ユーザー定義関数の CCSID 規則に従います。つまり、アプリケーションのコード化スキームの適切な CCSID でストリング・データ・タイプを返します。 そのため、返されたデータのエンコードに関する問題を回避するために、CAST 関数を使用することが必要になる場合があります。
日付値の制限
JSON文書で$DATEが使用される場合、1970年1月1日から2037年12月31日までの日付値のみがサポートされます。
例
表 T1 の列 C1 に、以下の 3 つの行の BSON 形式の JSON ドキュメントが含まれているとします。
{person: {name: “Mike”, age: 25}}
{person: {name: “John”, age: 42}}
{person: {name: “Kevin”, age: 34}}
以下の照会は、2 つの列 (TYPE と VALUE) を持つ表を返します。
SELECT X.*
FROM T1, TABLE(SYSTOOLS.JSON_TABLE(C1,'person', 's:50')) X
+----------------------------------
| TYPE | VALUE
+----------------------------------
1_| 3 | {name:"Mike",age:25}
2_| 3 | {name:"John",age:42}
3_| 3 | {name:"Kevin",age:34}
+----------------------------------
TYPE にはエレメント 'person' の BSON タイプが含まれており、VALUE には 'person' の値が含まれています。 TYPE 3 は、組み込みドキュメント (ネストされた JSON オブジェクト) の BSON タイプです。
