[TD_SYSFNLIB.]TD_JSONSHRED( ON (json_document_retrieving_expr) USING ROWEXPR(row_expr_literal) COLEXPR(column_expr_literal [,...]) RETURNTYPES(return_type [,...]) [NOCASE(nocase_value)] [TRUNCATE(truncate_value)] ) [AS] correlation_name [(column_name [,...])]
構文要素
- json_documents_retrieving_expr
- 少なくとも2つの列を返すクエリー式。
最初の列は、行の識別子の役割を持ち、返されたテーブル内の行を特定の入力JSONドキュメント内のデータに関連付ける方法として機能します。また最初の列には、返されるテーブルのプライマリ インデックスとしての機能もあり、LOB以外のデータ型を使用できます。ベスト プラクティスは、各入力行に対して固有の値になるように設定し、関数によって処理される個別のJSONドキュメントに対応するようにすることです。
この列は、変更されないまま、結果セットの最初の列としてTD_JSONSHREDにより返され(パススルーされ)ます。
最後の列には、シュレッドするJSON文書が含まれます。
データ型は、JSON、CLOB、VARCHARのいずれかです。CLOBでは、2GBまでのJSONドキュメントの入力が可能です。
- row_expr_literal
- シュレッド対象のデータを含むJSONオブジェクトの識別子。TD_JSONSHREDは、特定されたオブジェクトの内容を、返される(出力)テーブルの行にシュレッドします。シュレッドされた複数のオブジェクトに同じ識別子がある場合、その内容は返されたテーブルの異なる行に返されます。
- column_expr_literal
- シュレッドされたデータ内のJSONオブジェクトの識別子。オブジェクトの値は、返されるテーブルの列の値になります。デフォルトでは、オブジェクト識別子が列名として使用されます。シュレッドされたデータ内の複数のオブジェクトに同じ識別子がある場合は、その値は出力テーブルの複数行の列値になります。
- return_type
- 返された派生テーブル内のシュレッドされたJSONデータの列に割り当てられたデータ型。
- 戻りタイプの数は、COLEXPRに指定された列の数に対応する必要があります。(元の入力テーブル内の非JSONデータのパススルー列は含まれません。)
- 出力される型は、一重引用(アポストロフィ)で囲む必要があります。
- 有効な出力データ型は、DECIMAL/NUMERIC、BYTEINT、SMALLINT、INTEGER、BIGINT、REAL、FLOAT、DOUBLE PRECISION、DATE、VARCHAR、CLOBです。シュレッドされたJSONデータの最大文字列サイズは16MBです。
- 各型に対してフォーマット句を含めることができます。
- 異なる型の出力が必要な場合は、任意の列をVARCHARとして出力し、それを別のデータ型にキャストできます。
- VARCHAR型の列に指定する最大長は、シュレッドされたデータをその列に収容できるように指定する必要があります。
- VARCHARおよびCLOBデータでは、デフォルトの出力文字セットが入力文字セットと一致します。
- nocase_value
- COLEXPRとROWEXPRの文字列照合で大文字と小文字が区別されるかどうかを決定します。指定される値は0または1です。
- 0は、文字列照合で大文字と小文字が区別されることを意味します。0がデフォルトです。
- 1は、文字列照合で大文字小文字は区別されないことを意味します。
- truncate_value
- 対応するRETURNTYPE指定を超えるシュレッドされたデータがTD_JSONSHREDによってどのように処理されるかを決定します。指定される値は0または1です。
- 0は、TD_JSONSHREDが処理に失敗しエラーが表示されることを意味します。エラーには問題のある列が示されます。
- 1は、RETURNTYPE指定に一致するように切り捨てられたデータがTD_JSONSHREDによって返されることを意味します。1がデフォルトです。
- correlation_name
- TD_JSONSHREDによって返される派生テーブルの別名として使用される名前。
- column_name
- 派生テーブル内の列の名前。列名を指定しないと、TD_JSONSHREDはJSONオブジェクト名を使用します。列名の数は、派生テーブル内の列数と一致する必要があります。同じ名前のJSONオブジェクトから複数の列が出力される場合は、column_nameパラメータを使用して、出力された列に異なる名前を割り当てる必要があります。