3.4. 基準
条件には、以下のいずれかの項目を使用できます。
- true または false に評価される述語。
- 条件を組み合わせる論理条件(AND、OR、not)。
- 型ブール値の値式。
用途
criteria AND|OR criteria
criteria AND|OR criteria
NOT criteria
NOT criteria
(criteria)
(criteria)
expression (=|<>|!=|<|>|<=|>=) (expression|((ANY|ALL|SOME) subquery|(array_expression)))
expression (=|<>|!=|<|>|<=|>=) (expression|((ANY|ALL|SOME) subquery|(array_expression)))
expression IS [NOT] DISTINCT FROM expression
expression IS [NOT] DISTINCT FROM expression
IS DISTINCT FROM
は null 値を同等とみなし、UNKNOWN 値を生成しません。
オプティマイザーは IS DISTINCT FROM
を処理するように調整されていないため、プッシュされていない結合述語で使用すると、作成される計画も通常の比較は実行されません。
expression [NOT] IS NULL
expression [NOT] IS NULL
expression [NOT] IN (expression [,expression]*)|subquery
expression [NOT] IN (expression [,expression]*)|subquery
expression [NOT] LIKE pattern [ESCAPE char]
expression [NOT] LIKE pattern [ESCAPE char]
LIKE
は、指定の文字列パターンに対して文字列式と一致します。パターンには %
を含めることで任意の数の文字に一致させ、任意の 1 文字に一致する _
を指定できます。エスケープ文字を使用すると、一致文字 %
および _
をエスケープできます。
expression [NOT] SIMILAR TO pattern [ESCAPE char]
expression [NOT] SIMILAR TO pattern [ESCAPE char]
SIMILAR TO
は、LIKE と標準の正規表現構文との間の相互です。.* および . ではなく、%
と
が使用され _
ます
。
Data Virtualization は、SIMILAR TO
パターン値を網羅的に検証しません。代わりに、パターンは同等の正規表現に変換されます。SIMILAR TO
を使用する場合は、一般的な正規表現機能に依存しないでください。追加の機能が必要な場合は、LIKE_REGEX
を使用します。Data Virtualization では SQL のプッシュダウン述語を処理する機能が制限されているため、literal 以外のパターンは使用しないでください。
expression [NOT] LIKE_REGEX pattern
expression [NOT] LIKE_REGEX pattern
照合には、LIKE_REGEX
を標準の正規表現構文と共に使用できます。これは、エスケープ文字が使用されなくなった点で SIMILAR TO
および LIKE
とは異なります。\
は正規表現の標準的なエスケープメカニズムで、%'
と _
には特別な意味がありません。ランタイムエンジンは正規表現の JRE 実装を使用します。詳細は、java.util.regex.Pattern クラスを参照してください。
データ仮想化は、LIKE_REGEX
パターン値を網羅的に検証しません。SQL 仕様で指定されていない JRE のみの正規表現機能を使用できます。また、すべてのソースが同じ正規表現のフレーバーまたは拡張機能を使用できる訳ではありません。プッシュダウンの状況では、使用するパターンが Data Virtualization と該当するすべてのソースで同じ意味を持つように注意してください。
EXISTS (subquery)
EXISTS (subquery)
expression [NOT] BETWEEN minExpression AND maxExpression
expression [NOT] BETWEEN minExpression AND maxExpression
Data Virtualization は、BETWEEN
を同等の形式 式である minExpression AND expression 00:00:0 maxExpression
に変換します。
expression
expression
式
のタイプが Boolean になります。
構文ルール
- 最も低いものから高い優先順位の順番は、compare、not、AND、OR です。
- 括弧でネストされた基準は、親基準を評価する前に論理的に評価されます。
有効な基準の例をいくつか示します。
-
(balance > 2500.0)
-
100*(50 - x)/(25 - y) > z
-
concat(areaCode,concat('-',phone))LIKE '313361'
null 値は不明な値を表します。null 値と比較すると 不明な
と評価されます。これは、使用されて いない
場合でも true にすることはできません。
条件の優先順位
Data Virtualization は、優先順位が低い条件よりも先に、優先順位の高い条件を解析して評価します。優先順位が等しい条件は left-associative です。以下の表は、high から low までの条件の一覧です。
状態 | 説明 |
---|---|
SQL 演算子 | 式を参照してください。 |
EXISTS, LIKE_REGEX, BETWEEN, IN, IN, IS NULL, IS DISTINCT, <,GITOPS, >, >=, =, <> | Comparison |
NOT | 否定 |
AND | 接続詞 |
あるいは | disjunction |
先行さを防ぐために、パーサーは考えられる基準シーケンスをすべて受け入れません。 たとえば、left-associative 解析では、最初に = を認識してから一般的な値式
になりません。を探すため、=
b は nullB は
有効な一般的な値式ではありません。 したがって、ネストを使用する必要があります。たとえば、(a = b)は null です
。 ルール の解析に関する詳細は、「SQL 文法の BNF 」を参照してください。