ESQL は、複雑な比較タスクのための幾つかの演算子をサポートしています。
ESQL を使用して、単純な比較を実行する場合は、ESQL の単純な比較演算子を参照してください。
BETWEEN operator .-ASYMMETRIC-. >>-expression--+-----+--BETWEEN--+------------+-----------------> '-NOT-' '-SYMMETRIC--' >--endpoint_1--AND--endpoint_2---------------------------------><
この演算子は、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 関数が 1 つ以上の値を戻したか (TRUE)、 それとも値を戻さなかったか (FALSE) を示すブール値を戻します。EXISTS operator >>-Operand--(--ListExpression--)-------------------------------><
EXISTS(SELECT * FROM something WHERE predicate)
IN operator .-,---------. V | >>-operand_1--+-----+--IN--(----operand_2-+--)----------------->< '-NOT-'
左オペランドが NULL でなく、右オペランドのいずれかと等しいなら、結果は TRUE になります。 左オペランドが NULL でなく、右オペランドのどれも NULL 値でなく、 左オペランドが 1 つ以上の右オペランドに等しくないなら、結果は FALSE です。 それ以外の場合、結果は UNKNOWN です。 オペランドのタイプが異なる場合には、特別な規則が適用されます。 これらの規則については、暗黙のキャストで説明されています。
operand_1 の評価結果は、スカラー値にならなければなりません。 operand_2 では、operand_1 と比較できるタイプのスカラーを返す一連の式を記述するか、LIST を返す 1 つの式を記述できます。 SELECT 関数から返される値が LIST の場合は、SelectClause の列が 1 つだけになり、その列の各 ROW が operand_1 と比較されて、同等かどうかが確認されます。
SET OutputRoot.XMLNSC.Top.Result1 = 30 NOT IN(34, 42, 45)
SET OutputRoot.XMLNSC.Top.Result2 = var1 IN(var2, var3, var4);
SET OutputRoot.XMLNSC.Top.Result3 = 42 IN(
SELECT A FROM InputRoot.XMLNSC.Top.a[] AS A);
SET OutputRoot.XMLNSC.Top.Result4 = 42 IN(
LIST{34,36,37,38,39,40,41,42,43,44});
SET OutputRoot.XMLNSC.Top.Result5 = var1 IN(
InputRoot.XMLNSC.Top.test[]);
IS operator .-TRUE-------. >>-Operand --IS--+-----+--+-FALSE------+----------------------->< '-NOT-' +-INF--------+ +-+INF-------+ +- -INF------+ +-INFINITY---+ +-+INFINITY--+ +- -INFINITY-+ +-NAN--------+ +-NULL-------+ +-NUM--------+ +-NUMBER-----+ '-UNKNOWN----'
IS 演算子の主な目的は、値が NULL かどうかをテストすることです。 比較演算子 (=) を使用して NULL 値をテストすることはできません。これは、ある値と NULL との比較結果は常に NULL になるからです。
さらに、IS オペランドを使用して、ブール値 TRUE と FALSE のテストや、10 進数の値が特殊値かどうかのテストを実行することも可能です。 これらの値は、大文字、小文字、または大/小文字混合の値 INF、+INF、-INF、 NAN (数値ではない)、および NUM (有効な数値) によって示されます。 代替フォーム +INFINITY、-INFINITY、および NUMBER も受け入れられます。
非数値タイプに適用される場合、結果は FALSE となります。
LIKE operator >>-source--+-----+--LIKE--pattern--+--------------------+------>< '-NOT-' '-ESCAPE--EscapeChar-'
結果が TRUE になるのは、どのオペランドも NULL ではなく、source オペランドが pattern オペランドと合致する場合です。 結果が FALSE になるのは、どのオペランドも NULL ではなく、source オペランドが pattern オペランドと合致しない場合です。 それ以外の場合、結果は 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 '$'
演算子 SINGULAR は、リストにエレメントが 1 つのみある場合は TRUE のブール値を戻し、それ以外の場合は FALSE を戻します。SINGULAR operator >>-Operand--(--ListExpression--)-------------------------------><