EXPLAIN
SQL 文の実行計画を返します。EXPLAIN は SELECT、DELETE、その他の DML 文をサポートします。結果セットには string 型の単一カラムplan が含まれます。

SQL 構文
CROSS APPLY / OUTER APPLY
左側のテーブルの各行に対して、テーブル値関数またはサブクエリを適用する横方向結合(lateral join)です。CROSS APPLY適用した式が行を返さない左側の行は除外します(内部結合と同等)。OUTER APPLY適用した式が行を返さない場合でも左側の行を保持し、一致しないカラムを NULL で埋めます(左結合と同等)。
Window 関数
Window 関数は DV Engine で評価され、個々のデータソースにはプッシュダウンされません。LEAD
ウィンドウ内で現在の行からoffset 行先の行にある expr の値を返します。該当する行が存在しない場合は default を返します。
構文
- expr 対象の行で評価する式。
- offset 前方に見る行数。デフォルト値は 1 です。
- default 指定されたオフセットに行が存在しない場合に返す値。デフォルト値は NULL です。
LAG
ウィンドウ内で現在の行からoffset 行前の行にある expr の値を返します。該当する行が存在しない場合は default を返します。
構文
- expr 対象の行で評価する式。
- offset 後方に見る行数。デフォルト値は 1 です。
- default 指定されたオフセットに行が存在しない場合に返す値。デフォルト値は NULL です。
FIRST_VALUE
現在のウィンドウフレーム内の最初の値を返します。 構文- expr 評価する式。
LAST_VALUE
現在のウィンドウフレーム内の最後の値を返します。 構文- expr 評価する式。
集計関数
STDDEV_POP / STDDEV_SAMP
数値カラムの母標準偏差または標本標準偏差を返します。 構文- expr 評価する数値カラムまたは式。
VAR_POP / VAR_SAMP
数値カラムの母分散または標本分散を返します。 構文- expr 評価する数値カラムまたは式。
STRING_AGG
グループ内の値を、指定した区切り文字で連結して単一の文字列にします。 構文- expr 連結するカラムまたは式。
- delimiter 連結する値の間に配置する区切り文字列。
STRING_AGG の内部で DISTINCT または ORDER BY を使用すると、評価は DV Engine 内で行われ、ソースにはプッシュダウンされません。JSONARRAY_AGG
グループ内の値を JSON 配列にまとめます。JSON 型の値を返します。 構文- expr まとめるカラムまたは式。
文字列関数
REGEXP_REPLACE
正規表現パターンに一致する部分文字列を置換します。 構文- str 入力文字列。
- pattern 一致させる正規表現。
- replacement 各一致に対して置換する文字列。
- flags オプションの修飾フラグ:
g(すべての一致を置換)、m(複数行)、i(大文字小文字を区別しない)。
REGEXP_INSTR
文字列内で正規表現が最初に一致した位置を 1 始まりで返します。一致がない場合は 0 を返します。 構文- str 入力文字列。
- pattern 一致させる正規表現。
REGEXP_SUBSTR
正規表現に一致した部分文字列を返します。一致がない場合は NULL を返します。 構文- str 入力文字列。
- pattern 一致させる正規表現。
SPLIT_PART
文字列を区切り文字で分割した後の N 番目のフィールドを返します。フィールドは 1 始まりです。 構文- str 入力文字列。
- delimiter 区切り文字列。
- n 返すフィールドの 1 始まりのインデックス。
BASE64_ENCODE / BASE64_DECODE
バイナリデータを Base64 文字列にエンコード、または Base64 文字列をバイナリにデコードします。 構文- bytes エンコードするバイナリデータ。
- str デコードする Base64 エンコード文字列。
TEXT_ENCODE / TEXT_DECODE
指定した文字セットを使用して、文字列とバイト間の変換を行います。 構文- str エンコードする文字列。
- bytes デコードするバイトシーケンス。
- charset 文字セット名。
UTF-8やISO-8859-1など。
similarity
0.0 から 1.0 の間のあいまい文字列類似度スコアを返します。 構文- v1 1 つ目の文字列。
- v2
v1と比較する 2 つ目の文字列。 - algorithm オプション。使用する類似度アルゴリズム。デフォルト値は
jaro-winklerです。levenshteinなどの代替も指定できます。
セキュリティ・暗号関数
SHA1 / SHA2_256 / SHA2_512
入力テキストの SHA ハッシュを計算し、結果をバイナリ値として返します。固定のアルゴリズムを指定したい場合に、HASHBYTES の直接的な代替として使用します。
構文
- text ハッシュ化する文字列。
AES_ENCRYPT / AES_DECRYPT
AES-256 対称暗号化を使用して文字列を暗号化または復号します。 構文- text 暗号化する平文文字列。
- bytes 復号する暗号化バイトシーケンス。
- key AES-256 暗号化キー。
JSON 関数
JSONPATHVALUE
JSONPath 式を使用して JSON ドキュメントからスカラー値を抽出します。この関数はJSON_EXTRACT のエイリアスで、CData ドライバーにプッシュダウンされます。
構文
- json クエリ対象の JSON ドキュメント。
- path 抽出するスカラー値を特定する JSONPath 式。
- nullLeaf オプションの Boolean。
trueの場合、リーフノードが存在しなくてもエラーを発生させず NULL を返します。
JSONQUERY
指定した JSONPath の位置にある JSON フラグメント(オブジェクトまたは配列)を抽出します。スカラーではなく JSON 型の値を返します。 構文- json クエリ対象の JSON ドキュメント。
- path 抽出する配列またはオブジェクトを特定する JSONPath 式。
- nullLeaf オプションの Boolean。
trueの場合、リーフノードが存在しなくてもエラーを発生させず NULL を返します。
JSONPARSE
文字列または CLOB 値を JSON としてパースします。 構文- clob パースする文字列または CLOB。
- wellformed Boolean。
trueの場合、関数は JSON バリデーションをスキップします。
JSONOBJECT
1 つ以上の名前と値のペアから JSON オブジェクトを構築します。 構文- expr キーに対する値の式。
- name 値に対するキー名。
JSONARRAY
値のリストから JSON 配列を構築します。 構文- expr 配列に含める 1 つ以上の値。
JSONTOXML
JSON 値を XML ドキュメントに変換します。 構文- rootName ルート XML 要素として使用する名前。
- json 変換する JSON 値。
JSONTOARRAY
複数の JSONPath 式を使用して JSON ドキュメントから値を抽出し、配列として返します。各 colpath は、ベースパスに一致する各要素から 1 つの値を抽出します。 構文- json クエリ対象の JSON ドキュメント。
- path 配列反復のためのベース JSONPath。
- nullLeaf Boolean。
trueの場合、リーフノードが存在しなくてもエラーを発生させず NULL を返します。 - colpaths 1 つ以上の JSONPath 式。それぞれ現在の配列要素から値を抽出します。
JSONPath スライス構文
DV Engine は標準の JSONPath を配列スライス記法で拡張しています:
例
配列関数
ARRAY_GET
配列から 1 始まりのインデックスにある要素を返します。 構文- arr アクセスする配列。
- idx 返す要素の 1 始まりのインデックス。
ARRAY_LENGTH
配列内の要素数を返します。 構文- arr 測定する配列。
ARRAY_ADD
末尾に値を追加した新しい配列を返します。 構文- arr 元の配列。
- value 追加する値。
ARRAY_IN
値が配列の要素である場合にtrue を返します。
構文
- haystack 検索する配列。
- needle 探す値。
ARRAY_LIKE
配列内のいずれかの要素が LIKE パターンに一致する場合にtrue を返します。
構文
- haystack 検索する配列。
- pattern 各要素と照合する LIKE パターン。
ARRAY_LIKE_REGEX
配列内のいずれかの要素が正規表現パターンに一致する場合にtrue を返します。
構文
- haystack 検索する配列。
- pattern 各要素と照合する正規表現。
ASARRAY / ASLIST
個々の値から配列またはリストを構築します。 ASLIST-引数をリストとして返します: Object(java.util.List)を返します。ASARRAY-引数を配列として返します: SQL 配列を返します。
SQL 配列型が必要な場合は ASARRAY を使用します。汎用リストが期待される場合(たとえば、リストを受け取る他の関数への入力として)は ASLIST を使用します。
- v1, v2, … 配列またはリストに含める値。
数値関数
BITAND / BITOR / BITXOR
2 つの整数に対してビット単位の AND、OR、XOR 演算を実行します。 構文- x 1 つ目の整数。
- y 2 つ目の整数。
BITNOT
整数に対してビット単位の NOT 演算を実行します。 構文- x ビット単位で反転する整数。
日付と時刻の関数
DATE_FORMAT
MySQL スタイルのフォーマットパターンを使用して、日付またはタイムスタンプを文字列にフォーマットします。 構文- date フォーマットする日付またはタイムスタンプ値。
- format フォーマットパターン文字列(例:
'%Y-%m-%d'や'%Y-%m-%d %H:%i:%s')。
ISOWEEK / ISOYEAR
指定した日付の ISO 8601 週番号または ISO 年を返します。第 1 週は、その年の最初の木曜日を含む週です。 構文- date 評価する日付値。
日付範囲関数
DV Engine は、日付範囲の境界値を返す便利な関数を提供します。これらをWHERE 句で BETWEEN や比較演算子と組み合わせて使用し、相対的な期間でフィルタします。
L_LAST_MONTH / L_THIS_MONTH / L_NEXT_MONTH
前月、当月、または翌月の開始境界を返します。L_LAST_N_MONTHS(n) / L_NEXT_N_MONTHS(n)
本日から N か月前方または後方のローリングウィンドウの開始境界を返します。L_LAST_QUARTER / L_THIS_QUARTER / L_NEXT_QUARTER
前四半期、当四半期、または翌四半期の開始境界を返します。L_LAST_N_QUARTERS(n) / L_NEXT_N_QUARTERS(n)
本日から N 四半期前方または後方のローリングウィンドウの開始境界を返します。L_LAST_YEAR / L_THIS_YEAR / L_NEXT_YEAR
前年、当年、または翌年の開始境界を返します。L_LAST_N_YEARS(n) / L_NEXT_N_YEARS(n)
本日から N 年前方または後方のローリングウィンドウの開始境界を返します。L_LAST_90_DAYS / L_NEXT_90_DAYS
本日から前方または後方に 90 日のローリングウィンドウの境界日を返します。その他の関数
UUID
新しいランダムな UUID 文字列を生成します。 構文オプティマイザヒント
オプティマイザヒントは SQL コメント内に埋め込まれ、DV Engine にクエリ実行の計画方法を指示します。クエリ結果は変更しません。MAKEDEP
依存結合を強制します。エンジンはこのテーブルを最初に評価し、他のソースをクエリする際にそのキー値をWHERE key IN (...) フィルタとして使用します。これにより、大きなソースから取得する行数を削減します。
構文