JSON_TABLE 表関数

JSON_TABLE ユーザー定義関数は、2 つの列を持つ表を返します。 最初の列は BSON タイプ、2 番目の列はストリング値です。

構文図を読むビジュアルシンタックスダイアグラムをスキップするJSON_TABLE( injson, inelem, retype)

スキーマは SYSTOOLS です。

injson
バイナリー形式の JSON ドキュメント (拡張 BSON) を返す式。
inelem
2048 バイト以下の文字ストリング定数またはグラフィック・ストリング定数。 inelem には、検索するパス修飾 JSON フィールド名が含まれます。
retype
関数の結果の特性を指定する 32 バイト以下の文字ストリング定数。 rettypeにはデータ型指定を含める必要があります。JSON_VALスカラ関数をご覧ください。 この値には、大文字小文字の区別はありません。

関数の結果は、以下の表に示されている形式の表です。 列はすべて NULL 可能です。

表 1. 返される表
列名 データ・タイプ 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 タイプです。