このトピックでは、ESQL の複雑な比較演算子 (述部) について説明します。ESQL の単純な比較演算子に関する情報については、ESQL の単純な比較演算子を参照してください。
この演算子は、SYMMETRIC と ASYMMETRIC (どちらも指定しない場合のデフォルト) の 2 つの形式で存在します。SYMMETRIC 形式は、以下と同等です。
(source >= boundary1 AND source <= boundary2) OR (source >= boundary2 AND source <= boundary1)
ASYMMETRIC 形式は、以下と同等です。
source >= boundary1 AND source <= boundary2
ASYMMETRIC 形式の方が単純ですが、第 1 の境界値の値が第 2 の境界値より小さい場合に、期待する結果を戻すに過ぎません。境界条件式がリテラルの場合にのみ役立ちます。
オペランドのタイプが異なる場合には、特別な規則が適用されます。これについては、暗黙のキャストで説明されています。
EXISTS(SELECT * FROM something WHERE predicate)
左オペランドが NULL でなく、右オペランドのいずれかと等しいなら、結果は TRUE になります。左オペランドが NULL でなく、右オペランドのどれも NULL 値でなく、 左オペランドが右オペランドのどれにも等しくないなら、結果は FALSE です。それ以外の場合、結果は UNKNOWN です。 オペランドのタイプが異なる場合には、特別な規則が適用されます。これについては、暗黙のキャストで説明されています。
演算子 IS の主な目的は、ある値が NULL かどうかをテストすることです。これは、比較演算子 (=) ではできません。ある値と NULL との比較結果は常に NULL になるからです。
また IS を使用して、ブール値 TRUE および FALSE のテストを行ったり、10 進数の値が特殊値かどうかテストしたりできます。これらのテストは、大/小文字混合した値 INF、+INF、-INF、 NAN (数値ではない)、および NUM (有効な数値) によって示されます。代替フォーム +INFINITY、-INFINITY、および NUMBER も受け入れられます。
非数値タイプに適用される場合、結果は FALSE となります。
どのオペランドも NULL ではなく、source オペランドがパターン・オペランドと一致する場合、結果は TRUE です。どのオペランドも NULL ではなく、source オペランドがパターン・オペランドと一致しない場合、結果は FALSE です。それ以外の場合、結果は UNKNOWN です。
パターンは、特別な意味を持つパーセント (%) 文字および下線 (_) 文字のストリングで指定します。
Body.Trade.Company LIKE 'I__'
Body.Trade.Company LIKE 'I%'
パーセント文字および下線文字をマッチングの対象とする式の中で使用するには、これらの文字の前にエスケープ文字を付ける必要があります。エスケープ文字のデフォルトは、円記号 (¥) 文字です。
例えば、次の述部は、IBM_Corp と一致するものを検索します。
Body.Trade.Company LIKE 'IBM¥_Corp'
ESCAPE 文節を使用すれば、別のエスケープ文字を指定できます。例えば、上記の例を次のように指定することもできます。
Body.Trade.Company LIKE 'IBM$_Corp' ESCAPE '$'