ESQL 比較演算子

ESQL には、次の比較演算子 (述部) が用意されています。

演算子 >
第 1 のオペランドが第 2 のオペランドより大きい場合、結果は TRUE です。 それ以外の場合、結果は FALSE です (NULL 値の場合についてはこのリストの後を参照)。
演算子 <
第 1 のオペランドが第 2 のオペランドより小さい場合、結果は TRUE です。 それ以外の場合、結果は FALSE です (NULL 値の場合についてはこのリストの後を参照)。
演算子 >=
第 1 のオペランドが第 2 のオペランド以上の場合、結果は TRUE です。 それ以外の場合、結果は FALSE です (NULL 値の場合についてはこのリストの後を参照)。
演算子 <=
第 1 のオペランドが第 2 のオペランド以下の場合、結果は TRUE です。 それ以外の場合、結果は FALSE です (NULL 値の場合についてはこのリストの後を参照)。
演算子 =
第 1 のオペランドが第 2 のオペランドと等しい場合、結果は TRUE です。 それ以外の場合、結果は FALSE です (NULL 値の場合についてはこのリストの後を参照)。 この演算子は、スカラー、行、およびリストを比較できます。 リストと行の比較についての説明は、 ROW および LIST の比較をご覧ください。
演算子 <>
第 1 のオペランドが第 2 のオペランドと等しくない場合、結果は TRUE です。 それ以外の場合、結果は FALSE です (NULL 値の場合についてはこのリストの後を参照)。 この演算子は、スカラー、行、およびリストを比較できます。 リストと行の比較についての説明は、 ROW および LIST の比較をご覧ください。
演算子 BETWEEN
演算子 BETWEEN を使うと、 ある値が 2 つの境界値の間にあるかどうかをテストすることができます。

この演算子は、SYMMETRIC と ASYMMETRIC (どちらも指定しない場合のデフォルト) の 2 つの形式で存在します。 SYMMETRIC 形式は、以下と同等です。

(source >= boundary1 AND source <= boundary2) または
(source >= boundary2 AND source <= boundary1)

ASYMMETRIC 形式は、以下と同等です。

source >= boundary1 AND source <= boundary2

ASYMMETRIC 形式の方が単純ですが、第 1 の境界値の値が第 2 の境界値より小さい場合に、期待する結果を戻すに過ぎません。 境界条件式がリテラルの場合にのみ役立ちます。

上記のどの場合でも、オペランドが NULL なら結果は UNKNOWN です。 オペランドのタイプが異なる場合には、特別な規則が適用されます。 これについては、暗黙のキャストで説明されています。

演算子 IN
演算子 IN を使用すると、ある値が、 いくつかの値のリストのうちのいずれかと等しいかどうかをテストできます。
構文図を読む構文図をスキップする
IN operator

                              .-,---------.
                              V           |
>>-operand_1--+-----+--IN--(----operand_2-+--)-----------------><
              '-NOT-'

左オペランドが NULL でなく、右オペランドのいずれかと等しいなら、結果は TRUE になります。 左オペランドが NULL でなく、右オペランドのどれも NULL 値でなく、 左オペランドが右オペランドのどれにも等しくないなら、結果は FALSE です。 それ以外の場合、結果は UNKNOWN です。 オペランドのタイプが異なる場合には、特別な規則が適用されます。 これについては、暗黙のキャストで説明されています。

演算子 LIKE
演算子 LIKE は、特定のパターンと一致するストリングを検索します。

どのオペランドも NULL ではなく、 ソース・オペランド (operand_1) がパターン・オペランドと一致する場合、結果は TRUE です。 どのオペランドも NULL ではなく、ソース・オペランドがパターン・オペランドと一致しない場合、 結果は FALSE です。 それ以外の場合、結果は UNKNOWN です。

パターンは、特別な意味を持つパーセント (%) 文字および下線 (_) 文字のストリングで指定します。

  • 下線文字 _ は、任意の 1 文字と一致します。
    たとえば、次の述部は、IBM と IGI に一致するものを検索しますが、 International Business Machines または IBM Corp と一致するものは検索しません。
    Body.Trade.Company LIKE 'I__'
  • パーセント文字 % は、ゼロ個または任意数の文字で構成されるストリングと一致します。
    たとえば、次の述部は、IBM、IGI、International Business Machines、および IBM Corp と一致するものを検索します。
    Body.Trade.Company LIKE 'I%'

パーセント文字および下線文字をマッチングの対象とする式の中で使用するには、 これらの文字の前にエスケープ文字を付ける必要があります。 エスケープ文字のデフォルトは、円記号 (¥) 文字です。

たとえば、次の述部は、IBM_Corp と一致するものを検索します。

Body.Trade.Company LIKE 'IBM¥_Corp'

ESCAPE 文節を使用すれば、別のエスケープ文字を指定できます。 たとえば、上記の例を次のように指定することもできます。

Body.Trade.Company LIKE 'IBM$_Corp' ESCAPE '$'
演算子 IS
演算子 IS を使うと、ある値が NULL かどうかをテストできます。

これには、大文字小文字混合した値 INF、+INF、-INF、 NAN (数値ではない)、および NUM のテストが含まれます。 代替フォーム +INFINITY、-INFINITY、および NUMBER も受け入れられます。

非数値タイプに適用される場合、結果は FALSE となります。

これは、比較演算子 (=) ではできません。 NULL との比較結果は常に NULL になるからです。 さらにこれを使用した場合、ブール値のテストが英語として自然な形になります。

左オペランドの値が、指定された値 (TRUE、FALSE、UNKNOWN、または NULL) に等しい場合、 または NOT 文節が指定された場合は等しくない場合、結果は TRUE になります。 それ以外の場合、結果は FALSE です。

演算子 EXISTS
演算子 EXISTS は、SELECT 関数が 1 つ以上の値を戻したか (TRUE)、 それとも値を戻さなかったか (FALSE) を示すブール値を戻します。
EXISTS(SELECT * FROM something WHERE predicate)

関連概念
メッセージ・フロー
マッピング

関連タスク
メッセージ・フロー・アプリケーションの開発
ESQL の開発

関連資料
組み込みノード
ESQL
ROW および LIST の比較
暗黙のキャスト