条件式は、SQL文のWHERE句で使用されるSQL-92の条件式に準拠しています。
例
color = 'blue'
上記の条件式の左辺のcolorは、識別子です。フィルタリング時にJMS Messagesのプロパティ名と比較されます。
右辺の'blue'は、リテラルです。フィルタリング時にJMS Messagesのプロパティ値と比較されます。
リテラルには、文字列型リテラル、完全数値リテラル、および近似数値リテラルがあります。
シングルクォートで囲む必要があります。
小数点なしの数値(例:57、-957、+62)です。
指数表記された数値(例:7E3、-57.9E2)、または小数点を含む数値(例:7.、-95.7、+6.2)です。
なお、条件式の文法の詳細については、Javadoc集の“パッケージ javax.jms”の“インタフェース Message”を参照してください。
条件式の例を以下に示します。
比較演算条件式
以下の比較演算子が使用できます。
=(等しい)
>(大きい)
>=(以上)
<(小さい)
<=(以下)
<>(等しくない)
例:プロパティ名NAMEのプロパティ値が“FUJITSU”のJMS Messagesを受信する場合
NAME = 'FUJITSU'
例:プロパティ名NUMBERのプロパティ値が1000以上のJMS Messagesを受信する場合
NUMBER >= 1000
例:プロパティ名NUMBERのプロパティ値が230以下のJMS Messagesを受信する場合
NUMBER <= 10 * 20 + 30
上記のように、算術演算子(+,-,*,/)を使用できます。
BETWEEN条件式
BETWEEN条件式により範囲付きの検索ができます。
例:プロパティ名NUMBERのプロパティ値が100以上かつ1000以下のJMS Messagesを受信する場合
NUMBER BETWEEN 100 AND 1000
例:プロパティ名NUMBERのプロパティ値が100未満または1000より大きいJMS Messagesを受信する場合
NUMBER NOT BETWEEN 100 AND 1000
LIKE条件式
LIKE条件式によりパターン検索を使用した検索ができます。
文字列リテラルに、以下の記号を指定することによりパターン検索を行います。
_:任意の1文字
%:任意の文字列
オプションであるエスケープ文字は、単独の文字リテラルです。'_'と'%'を単なる文字列として扱う場合に使用します。
例:プロパティ名PROPERTYのプロパティ値が“任意の文字+C”のJMS Messagesを受信する場合
PROPERTY LIKE '%C'
プロパティ値が“ABC”、“CCC”、または“C”の場合は、受信できます。“AB”の場合は、受信できません。
例:プロパティ名PROPERTYのプロパティ値が“任意の文字+C”以外のJMS Messagesを受信する場合
PROPERTY NOT LIKE '%C'
プロパティ値が“AB”の場合は、受信できます。“ABC”、“CCC”、または“C”の場合は、受信できません。
例:プロパティ名PROPERTYのプロパティ値が“任意の1文字+C”のJMS Messagesを受信する場合
PROPERTY LIKE '_C'
プロパティ値が“AC”または“CC”の場合は、受信できます。“ABC”または“C”の場合は、受信できません。
例:プロパティ名PROPERTYのプロパティ値が“任意の1文字+本”のJMS Messagesを受信する場合
PROPERTY LIKE '__本'
プロパティ値が“日本”の場合は、受信できます、“本”の場合は、受信できません。
なお、日本語は1バイトであるため、1文字に付き'_'が2個必要です。
例:プロパティ名PROPERTYのプロパティ値が“任意の文字+%+C”のJMS Messagesを受信する場合
PROPERTY LIKE '%#%C' ESCAPE '#'
プロパティ値が“A%C”の場合は、受信できます。“AAC”の場合は、受信できません。
NULL条件式
NULL条件式により、プロパティがあるかどうかを検索できます。
例:プロパティ名PROPERTYのプロパティが存在しないJMS Messagesを受信する場合
PROPERTY IS NULL
例:プロパティ名PROPERTYのプロパティが存在するJMS Messagesを受信する場合
PROPERTY IS NOT NULL
IN条件式
IN条件式により、リスト内の項目を検索できます。
例:プロパティ名PROPERTYのプロパティ値が“AAA”、“BBB”、または“CCC”ならば、JMS Messagesを受信する場合
PROPERTY IN ('AAA','BBB','CCC')
例:プロパティ名PROPERTYのプロパティ値が“AAA”、“BBB”、または“CCC”以外の場合にJMS Messagesを受信する場合
PROPERTY NOT IN ('AAA','BBB','CCC')
条件式の混在
上記の条件式を、NOT、AND、ORにより混在して指定できます。
例:プロパティ名NUMBERのプロパティ値が100以上かつ1000以下、またはプロパティ名PROPERTYのプロパティ値が“任意の文字+C”の場合にJMS Messagesを受信する場合
(NUMBER BETWEEN 100 AND 1000) OR (PROPERTY LIKE '%C')
例:プロパティ名NUMBERのプロパティ値が100以上かつ1000以下、かつプロパティ名PROPERTYのプロパティ値が“任意の文字+C”の場合にJMS Messagesを受信
(NUMBER BETWEEN 100 AND 1000) AND (PROPERTY LIKE '%C')
例:プロパティ名NUMBERのプロパティ値が100以上かつ1000以下以外、またはプロパティ名PROPERTYのプロパティ値が“任意の文字+C”以外の場合にJMS Messagesを受信する場合
NOT ((NUMBER BETWEEN 100 AND 1000) AND (PROPERTY LIKE '%C'))
注意
指定可能なメッセージセレクタ文の最大長は、4096バイトです。
条件式に指定可能な識別子および文字列型リテラルの最大長は、1024バイトです。
条件式内に指定可能な識別子と文字列型リテラルの合計の上限は、512個です。
IN条件式に指定可能なリスト数の上限は、256個です。
識別子には、日本語を指定できません。
LIKE条件式のESCAPE文字には、日本語を指定できません。