WHERE conditionExpression
デフォルトでは、オブジェクトに対する SOSL クエリを実行すると、アーカイブされた行を含めユーザに表示されているすべての行が取得されます。検索を限定するために、特定の項目値で検索結果を絞り込むことができます。
conditionExpression
WHERE 句の conditionExpression では次の構文を使用します。
1fieldExpression [logicalOperator fieldExpression2 ... ]論理演算子を使用して、複数の項目式を条件式に追加できます。
SOSL FIND ステートメントの条件式は、これらの例では太字で表示されます。
- FIND {test} RETURNING Account (id WHERE createddate = THIS_FISCAL_QUARTER)
- FIND {test} RETURNING Account (id WHERE cf__c includes('AAA'))
fieldExpression が評価される順序を定義するには、括弧を使用します。たとえば次の式は、fieldExpression1 が true で、fieldExpression2 または fieldExpression3 のいずれかが true の場合、true です。
ただし、次の式は、fieldExpression3 が true であるか、fieldExpression1 と fieldExpression2 の両方が true の場合、true です。
クライアントアプリケーションでは、演算子をネストするときに括弧を指定する必要があります。ただし、同じ種別の複数の演算子はネストする必要がありません。
1fieldExpression1 AND (fieldExpression2 OR fieldExpression3)1(fieldExpression1 AND fieldExpression2) OR fieldExpression3fieldExpression
fieldExpression では次の構文を使用します。
1fieldName comparisonOperator value各項目は次のとおりです。
| 構文 | 説明 |
|---|---|
| fieldName | 指定したオブジェクト内の項目の名前。名前の前後に一重または二重引用符を使用すると、エラーが発生します。項目に対する参照レベル以上の権限が必要です。ロングテキストエリア項目、暗号化されたデータ項目、または Base64 で符号化された項目以外の項目を指定できます。名前は、fieldList に含まれている項目である必要はありません。 |
| comparisonOperator | 値を比較する演算子。=、<=、IN、LIKE などがあります。演算子は、ほとんどの項目では大文字と小文字が区別されません。ただし、大文字と小文字が区別される項目では、大文字と小文字が区別されます。 |
| value | fieldName の値と比較するために使用される値。指定した項目の型と一致するデータ型の値を指定します。値は、他の項目名や計算値ではなく、有効な値にする必要があります。引用符が必要な場合は、単一引用符を使用します。二重引用符を使用するとエラーになります。日付と数値には、引用符は不要です。 |
比較演算子
次の表に、fieldExpression 構文で使用される comparisonOperator の値を示します。文字列の比較では、大文字と小文字は区別されません。
| 演算子 | 名前 | 説明 |
|---|---|---|
| = | Equals | fieldName の値が式の value に一致する場合、式は true です。等号演算子を使用する文字列の比較の場合、大文字と小文字が区別される一意の項目は大文字と小文字が区別され、他のすべての項目は大文字と小文字が区別されません。 |
| != | Not equals | fieldName の値が指定した value に一致しない場合、式は true です。 |
| < | Less than | fieldName の値が指定した value より小さい場合、式は true です。 |
| <= | Less or equal | fieldName の値が指定した value 以下の場合、式は true です。 |
| > | Greater than | fieldName の値が指定した value より大きい場合、式は true です。 |
| >= | Greater or equal | fieldName の値が指定した value 以上の場合、式は true です。 |
| LIKE | Like |
fieldName の値が指定した value のテキスト文字列の文字に一致する場合、式は true です。SOQL および SOSL の LIKE 演算子は、部分的なテキスト文字列を照合するメカニズムを提供し、ワイルドカードの使用がサポートされます。
たとえば、次のクエリは Appleton、Apple、Appl と一致しますが、Bappl とは一致しません。
|
| IN | IN | 値が WHERE 句の値のいずれかに等しい場合、式は true です。次に例を示します。IN の値は括弧で囲む必要があります。文字列の値は一重引用符で囲む必要があります。 IN と NOT IN は、ID (主キー) 項目または参照 (外部キー) 項目を照会するときに、準結合および反結合でも使用できます。 |
| NOT IN | NOT IN | 値が WHERE 句の値と等しくない場合、式は true です。次に例を示します。NOT IN の値は括弧で囲む必要があります。文字列の値は一重引用符で囲む必要があります。 |
| INCLUDES EXCLUDES | 複数選択リストにのみ適用されます。 |
論理演算子
次の表に、fieldExpression 構文で使用される論理演算子の値を示します。
| 演算子 | 構文 | 説明 |
|---|---|---|
| AND | fieldExpressionX AND fieldExpressionY | fieldExpressionX と fieldExpressionY の両方が true の場合に true。 |
| OR | fieldExpressionX OR fieldExpressionY |
fieldExpressionX または fieldExpressionY のいずれかが true の場合に true。 OR 句で外部キーの値を使用したリレーションクエリの動作は、API のバージョンによって異なります。OR を使用する WHERE 句でレコードの外部キーの値が null の場合、バージョン 13.0 以降ではレコードが返されますが、13.0 より前のバージョンではレコードが返されません。 |
| NOT | not fieldExpressionX |
fieldExpressionX が false の場合に true。 この論理演算子とは異なる比較演算子 NOT IN もあります。 |
引用符で囲まれた文字列のエスケープシーケンス
SOSL で次のエスケープシーケンスを使用できます。
| シーケンス | 意味 |
|---|---|
| \n または \N | 改行 |
| \r または \R | 行頭復帰 |
| \t または \T | タブ |
| \b または \B | ���ックスペース |
| \f または \F | フォームフィード |
| \" | 1 つの二重引用符文字 |
| \' | 1 つの一重引用符文字 |
| \\ | バックスラッシュ |
| LIKE 式のみ: \_ | 1 つのアンダースコア文字 ( _ ) |
| LIKE 式のみ: \% | 1 つのパーセント記号文字 ( % ) |
その他のコンテキストでバックスラッシュ文字を使用すると、エラーが発生します。
WHERE 句の例
| 例 |
|---|
|
|
|
|
|
ID で Salesforce ナレッジの記事を検索する |
ID で Salesforce ナレッジの複数の記事を検索する |
緯度座標 37、経度座標 122 の場所から 500 マイル以内にある地理位置情報項目または住所項目が含まれているすべての My_Custom_Object__c オブジェクトの全項目で「San Francisco」を検索する |