JSONExtractとJSONExtractValueの比較 - Teradata Database - 16.20

Teradata® Database JSONデータ型

prodname
Teradata Database
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1150-162K-JPN
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を使用します。