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 」を参照してください。