目的
JSONExtractValueメソッドとJSONExtractLargeValueメソッドは、JSONインスタンスのエンティティ値のテキスト表現を取得します。JSONExtractLargeValueはJSONExtractValueと同じ入力パラメータを受け取り、同じ操作を実行しますが、戻り値の型とサイズが異なります。
構文
- JSON_expr
- JSONデータ型と評価される式。
- JSONPath_expr
- JSONインスタンスの特定の部分に関する情報を抽出する式。
機能の説明
これらのメソッドは、JSON_exprによって指定されるJSONオブジェクトを検索し、JSONPath_exprによって指定されるエンティティ名の値を取得します。エンティティ名は、JSONPath書式設定文字列によって表わされます。
JSONPath_exprには、ゼロのJSON項目または単一のJSON項目(スカラー値またはJSON null)を選択する必要があります。 複数の値がJSONPath_exprと一致する場合は、複数の結果が見つかったことを示す警告とエラー メッセージ文字列が返されます。
戻り値
- JSONインスタンスにエンティティが見つかった場合は、エンティティの文字列値。
- JSONPath_exprで指定した問合わせ式に複数の値が一致する場合は、警告と"*** ERROR MULTI RESULT ***"というエラー メッセージ文字列。
- 結果が空の文字列の場合は、空の文字列。
- 結果がJSONのnullの場合は、Teradata NULL。
- JSONオブジェクトにエンティティが見つからなかった場合は、Teradata NULL。
- JSON_expr引数がnullの場合は、Teradata NULL。
JSONExtractValueは、必要な属性のVARCHARを返します。戻り値の長さのデフォルトは4Kですが、DBS制御フィールドJSON_AttributeSizeを使用して32,000文字(バイトではない)まで増やすことができます。このメソッドの結果がバッファに対して大きすぎる場合は、エラーが報告されます。
JSONExtractLargeValueは、型の最大サイズまでスカラー値を抽出します。CHARACTER SET LATINに対しては16,776,192文字、CHARACTER SET UNICODEに対しては8,388,096文字のCLOBを返します。
両方のメソッドの戻り値は、メソッドを呼び出したJSON型の文字セットに応じてUNICODEまたはLATINになります。パラメータの文字セットがJSON型の文字セットに一致しない場合、Teradataはパラメータの文字セットの正しい文字セットに変換しようとします。
返される文字列は、キャストをサポートする任意のデータ型にキャストできます。
使用
抽出の結果が大きい(32,000文字を超える)場合にのみJSONExtractLargeValueを使用する必要があります。それ以外の場合は、JSONExtractValueを使用します。