EQLレコード・フィルタは、WHERE句タイプのブール式で指定されます。
<DataSourceFilterString>WHERE booleanExpression</DataSourceFilterString> <SelectionFilterString>WHERE booleanExpression</SelectionFilterString>
式では、値がテストされる1つ以上の属性と、1つ以上のテスト条件が使用されます。たとえば、式では、次の表に示すように、数字と文字列値の比較演算子、NULL値の評価演算子、論理演算子を使用できます。EQL文とは異なり、WHEREキーワードは問合せ文字列で使用されません。
Operator | 説明 | 例 |
---|---|---|
= | 等しい(2つの式が等しいかどうかをテストします) | COUNTRY_NAME = 'France' |
<> | 等しくない(2つの式の条件が相互に等しくないかどうかをテストします) | PROD_WEIGHT_CLASS <> 2 |
> | より大きい(1つの式の条件がもう1つの式よりも大きいかどうかをテストします) | PROD_MIN_PRICE > 1000 |
< | より小さい(1つの式の条件がもう1つの式よりも小さいかどうかをテストします) | QUANTITY_SOLD < 500 |
>= | 以上(1つの式の条件がもう1つの式以上であるかどうかをテストします) | PROD_MIN_PRICE >= 75 |
<= | 以下(1つの式の条件がもう1つの式以下であるかどうかをテストします) | PROMO_COST <= 1500 |
BETWEEN low AND high | 値の境界範囲を指定します。ANDを使用して、低値(開始値)と高値(終了値)を分けます。 | FISCAL_YEAR BETWEEN 2000 AND 2006 |
IS NULL | NULL値の検索を指定します。 | CUST_EMAIL IS NULL |
IS NOT NULL | NULL以外の値の検索を指定します。 | PROD_STATUS IS NOT NULL |
AND | 2つの条件を組み合せて、どちらの条件もTRUEの場合はTRUEに評価します。 | PROD_MIN_PRICE > 1000 AND COUNTRY_NAME = 'Spain' |
OR | 2つの条件を組み合せて、いずれかの条件がTRUEの場合はTRUEに評価します。 | PROD_LIST_PRICE > 50 OR PROD_CATEGORY = 'Hardware' |
NOT | ブール式の値を反転します。 | NOT(COUNTRY_REGION = 'Europe' AND AMOUNT_SOLD > 1000) |
問合せで集計関数(SUMなど)は使用できません。 IN式もサポートされません。
COUNTRY_NAME = 'Spain' // Correct COUNTRY_NAME = "Spain" // Incorrect because double quotes are not allowed COUNTRY_NAME = Spain // Incorrect because the attribute stores string values
AMOUNT_SOLD = 500 // Correct AMOUNT_SOLD = "500" // Incorrect because the attribute stores numeric values
対話Webサービスに対して直接問合せを行う場合(たとえば、soapUIツールを使用するなど)、解析エラーが生じないように一部のXML文字をエスケープする必要があります。たとえば、< (より小さい)文字ではなく、<エスケープ文字を使用する必要があります。この章の例では、読みやすくなるようにエスケープされていない文字が使用されます。
言語IDを指定しない場合、en (英語)がデフォルトになります。
このLanguage要素の目的は、SearchFilterタイプ(レコード検索の場合)とValueSearchConfigタイプ(値検索の場合)におけるLanguage属性とは異なることに注意してください。
次の例に、リクエスト内でEQL解析エラー・メッセージのLanguage要素を指定する場所を示します。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header/> <soapenv:Body> <Request xmlns="http://www.endeca.com/MDEX/conversation/2/0"> <Language>fr</Language> <State> <DataSourceFilterString> COUNTRY_NAME = 'France' </DataSourceFilterString> <SelectionFilterString> AMOUNT_SOLD > 1000 </SelectionFilterString> </State> <ContentElementConfig xsi:type="RecordListConfig" HandlerFunction="RecordListHandler" HandlerNamespace="http://www.endeca.com/MDEX/conversation/handlers/2010" Id="RecordList" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> </ContentElementConfig> </Request> </soapenv:Body> </soapenv:Envelope>
この例では、DataSourceFilterStringは最初に、COUNTRY_NAME割当てに値Franceのないレコードをすべて除外します。値が1000よりも大きいAMOUNT_SOLD割当てのレコードをすべて返します。