JSONExtract、JSONExtractValueおよびJSONExtractLargeValueメソッドは、JSONインスタンスから値を抽出します。
- JSONExtract
- JSONインスタンスからデータを抽出します。必要なデータは、JSONPath式で指定します。結果は見つかった値で構成されるJSON配列で、一致がない場合はNULLになります。
- JSONExtractValue
- JSONPath構文を使用して指定したJSONインスタンスのエンティティ値のテキスト表現を取得できます。
- JSONExtractLargeValue
- JSONExtractLargeValueは、戻り値型とサイズ以外はJSONExtractValueと同じです。
次のテーブルは、3つの方法の主な違いを示しています。
メソッド | 戻り値 | 戻りタイプ | 複数の値の抽出が可能 |
---|---|---|---|
JSONExtract | 値またはJSON nullの配列 | JSON配列 | はい |
JSONExtractValue | スカラー値またはJSON null | VARCHAR | いいえ |
JSONExtractLargeValue | スカラー値またはJSON null | CLOB | いいえ |
いくつかの使用上の考慮事項を次に示します。
- デフォルトでは、JSONExtractValueは必要な文字セットのVARCHAR(4,096)を返します。ただし、DBS制御のJSON_AttributeSizeフィールドでサイズを最大32,000文字(バイトではない)に増やすことができます。このメソッドの戻り値の長さに結果を含めることができない場合は(最大32,000文字に戻り値の長さを増やした後でも)、代わりにJSONExtractLargeValueメソッドを使用する必要があります。
- JSONExtractLargeValueは、JSONExtractValueと同じように機能しますが、呼び出したJSON型の文字セットに応じて、CHARACTER SET LATINの場合は16,776,192文字、CHARACTER SET UNICODEの場合は8,388,096文字のCLOBを返します。
- JSONExtractValueとJSONExtractLargeValueのメソッドは、単一のスカラー値またはJSON nullしか抽出しません。複数の値がJSONPath問合わせ式と一致すると、複数の結果が見つかったことを示す警告やエラー メッセージ文字列が返されます。JSONインスタンスから複数の値を抽出する場合は、JSONExtractを使用します。
メソッドの中から1つを選択する理由は、その結果をどう使用するかによって異なります。例えば、JSONインスタンスから単一のスカラー値を抽出し、その値をVARCHARからキャスト可能な事前定義型として扱う場合は、JSONExtractValueを使用します。入れ子のJSONオブジェクト/配列を抽出し、それをJSONオブジェクトとして扱い、データの処理をさらに行なう場合は、JSONExtractを使用します。