WebSphere Message Broker バージョン 8.0.0.5 オペレーティング・システム: AIX、HP-Itanium、Linux、Solaris、Windows、z/OS

製品の最新バージョンについては、IBM Integration Bus バージョン 9.0 をご覧ください。

ESQL の複雑な比較演算子

ESQL は、複雑な比較タスクのための幾つかの演算子をサポートしています。

ESQL を使用して、単純な比較を実行する場合は、ESQL の単純な比較演算子を参照してください。

演算子 BETWEEN
BETWEEN 演算子を使用して、値が 2 つの境界値の間にあるかどうかをテストします。
構文図を読む構文図をスキップする
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
構文図を読む構文図をスキップする
EXISTS operator

>>-Operand--(--ListExpression--)-------------------------------><

演算子 EXISTS は、SELECT 関数が 1 つ以上の値を戻したか (TRUE)、 それとも値を戻さなかったか (FALSE) を示すブール値を戻します。
EXISTS(SELECT * FROM something WHERE predicate)
演算子 IN
演算子 IN を使用して、ある値が、いくつかの値のリストのうちのいずれかと等しいかどうかをテストします。
構文図を読む構文図をスキップする
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 と比較されて、同等かどうかが確認されます。

一連の式の例を以下に示します。
  • 対象のリストに 30 が存在しないので、Result1 は TRUE に設定されます。
    SET OutputRoot.XMLNSC.Top.Result1 = 30 NOT IN(34, 42, 45)
  • var1 の値が var2、var3、var4 のいずれかで見つかると、Result2 は TRUE に設定されます。
    SET OutputRoot.XMLNSC.Top.Result2 = var1 IN(var2, var3, var4);
1 つの列が含まれているリストの例を以下に示します。
  • SELECT ステートメントから返される結果セットで 42 が見つかると、Result3 は TRUE に設定されます。
    SET OutputRoot.XMLNSC.Top.Result3 = 42 IN(
        SELECT A FROM InputRoot.XMLNSC.Top.a[] AS A);
  • 対象のリストに 42 が存在するので、Result4 は TRUE に設定されます。
    SET OutputRoot.XMLNSC.Top.Result4 = 42 IN(
        LIST{34,36,37,38,39,40,41,42,43,44});
  • 繰り返し出現する「test」エレメントまたは直接の子のいずれかで var1 が見つかると、Result5 は TRUE に設定されます。
    SET OutputRoot.XMLNSC.Top.Result5 = var1 IN(
        InputRoot.XMLNSC.Top.test[]);
演算子 IS
演算子 IS を使用して、ある式が特殊値を戻したかどうかをテストします。
構文図を読む構文図をスキップする
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
LIKE 演算子を使用して、特定のパターンに適合するストリングを検索します。
構文図を読む構文図をスキップする
LIKE operator

>>-source--+-----+--LIKE--pattern--+--------------------+------><
           '-NOT-'                 '-ESCAPE--EscapeChar-'   

結果が TRUE になるのは、どのオペランドも NULL ではなく、source オペランドが pattern オペランドと合致する場合です。 結果が FALSE になるのは、どのオペランドも NULL ではなく、source オペランドが pattern オペランドと合致しない場合です。 それ以外の場合、結果は 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 '$'
演算子 SINGULAR
構文図を読む構文図をスキップする
SINGULAR operator

>>-Operand--(--ListExpression--)-------------------------------><

演算子 SINGULAR は、リストにエレメントが 1 つのみある場合は TRUE のブール値を戻し、それ以外の場合は FALSE を戻します。
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        最終更新:
        
        最終更新: 2015-02-28 17:47:18


参照トピック参照トピック | バージョン 8.0.0.5 | ak01045_