テーブル値関数のサポートは、ドライバーの試験的な機能です。この機能は、SQL-92 準拠というドライバーのコア範囲を超えるものです。そのため、これらの関数のパフォーマンスは最適ではない場合があります。
テーブル値関数の句
CROSS APPLY
CROSS APPLY 演算子は、先行するテーブル式によって生成されたテーブルまたは結果セットの各行に対してサブクエリを実行するために使用されます。 構文WITH
WITH 句は、特定のテーブル値関数と組み合わせて使用され、分割される構造内の構成要素(キー、要素名、属性名など)に対してマッチングを行ったり、関数から生成されるカラムのメタデータを指定するために使用されます。 例テーブル値関数
STRING_SPLIT
先行するテーブル式のレコードセット内の各レコードに対して、区切り文字(input_text)を含むカラムを区切り文字で分割して部分文字列に分け、部分文字列ごとに 1 つのレコードを返します。 構文- input_text パースしたい値を含むカラム。
- delimiter input_text で指定されたカラムの値を分割するために使用する文字。
JSONTABLE
先行するテーブル式のレコードセット内の各レコードに対して、JSON 配列(json_content)内のキーのうち、WITH 句で指定されたキーと一致するもののインスタンスごとに、「jsonpath」入力で指定されたスコープで 1 つのレコードを返します。 構文- json_content JSON の「テーブル」(オブジェクトの配列)。内容はネストできますが、ルートレベルでは他の JSON 構造ではなく、単一の JSON 配列でなければなりません。WITH 句で指定されたキーのすべてのインスタンスの値は、ルートレベルの JSON 配列の直接の子要素となるサブ構造についてのみ取得できます。
- jsonpath json_content 配列内で、内容を取得したいスコープを定義するオプションの JSONPath クエリ。WITH 句で指定された JSON キーは、このパラメータで定義されたスコープに存在している必要があります。デフォルトは JSON ルート($)です。ID カラムと「JSONColumn」という JSON 内容を持つカラムを含む、単一のレコードを持つサンプルテーブルを考えてみましょう。内容は次のとおりです。
XMLTABLE
先行するテーブル式の結果セット内の各レコードに対して、XML 構造(xml_content)内の要素や属性のうち、WITH 句で指定されたタグ名や属性名と一致するもののそれぞれについて、「xpath」入力で指定されたスコープで 1 つのレコードを返します。 構文- xml_content XML 構造を含むカラム。
- xpath WITH 句で指定されたタグ名や属性名と一致する内容をドライバーが抽出する、XML 構造内のスコープを指定するオプションの XPath。サブ要素の内容を抽出する場合、ドライバーはルートレベル(深さ 0)のタグ、ルートの直接の子(深さ 1)、およびそれらの子の子(深さ 2)からすべての内容を取得できます。要素の属性内容を抽出する場合、ドライバーはルートレベル(深さ 0)の指定された属性を含むタグ、およびルートレベル要素の直接の子(深さ 1)からすべての内容を取得できます。
- child_type WITH 句で指定されたカラムが内容を識別するためにチェックされる親要素(xpath 入力で指定)の部分を指定するオプションのパラメータ。次の値を指定できます:
- 0:WITH 句のカラムは、親要素の属性名およびサブ要素のタグ名との一致についてチェックされます。
- 1:WITH 句のカラムは、親要素の属性名との一致についてチェックされます。
- 2:WITH 句のカラムは、親要素のサブ要素のタグ名との一致についてチェックされます。指定しない場合、デフォルトは 0 です。
CSVTABLE
先行するテーブル式の結果セット内の各レコードに対して、CSV テーブル(csv_content)を含むカラムから読み取り、その CSV テーブル内の各レコードに対して、WITH 句で指定された CSV カラムの値を含む 1 つのレコードを返します。 構文- csv_content CSV テーブルを含むカラム。
- delimiter csv_content 入力に含まれる CSV 内容を分割する、オプションのカスタム区切り文字(カンマの代わり)。