この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

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 が評価される順序を定義するには、括弧を使用します。たとえば次の式は、fieldExpression1true で、fieldExpression2 または fieldExpression3 のいずれかが true の場合、true です。
    1fieldExpression1 AND (fieldExpression2 OR fieldExpression3)
  • ただし、次の式は、fieldExpression3true であるか、fieldExpression1fieldExpression2 の両方が true の場合、true です。
    1(fieldExpression1 AND fieldExpression2) OR fieldExpression3
  • クライアントアプリケーションでは、演算子をネストするときに括弧を指定する必要があります。ただし、同じ種別の複数の演算子はネストする必要がありません。

fieldExpression

fieldExpression では次の構文を使用します。

1fieldName comparisonOperator value

各項目は次のとおりです。

構文 説明
fieldName 指定したオブジェクト内の項目の名前。名前の前後に一重または二重引用符を使用すると、エラーが発生します。項目に対する参照レベル以上の権限が必要です。ロングテキストエリア項目、暗号化されたデータ項目、または Base64 で符号化された項目以外の項目を指定できます。fieldList に含まれている項目である必要はありません。
comparisonOperator 値を比較する、大文字と小文字を区別しない演算子。
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 演算子は、SQL の LIKE 演算子と似ています。部分的なテキスト文字列を照合するメカニズムを提供し、ワイルドカードの使用がサポートされます。
  • LIKE 演算子では %_ のワイルドカードがサポートされます。
  • % ワイルドカードは、0 個以上の文字に一致します。
  • _ ワイルドカードは、1 文字のみに一致します。
  • 指定した value のテキスト文字列は、一重引用符で囲む必要があります。
  • LIKE 演算子は、文字列項目でのみサポートされます。
  • SQL の大文字と小文字を区別する照合とは異なり、LIKE 演算子では大文字と小文字を区別しない照合が実行されます。
  • SOQL および SOSL の LIKE 演算子では、特殊文字 % または _ のエスケープがサポートされます。
  • 特殊文字をエスケープする場合を除き、検索ではバックスラッシュ文字を使用しないでください。
たとえば、次のクエリは Appleton、Apple、Appl と一致しますが、Bappl とは一致しません。
1SELECT AccountId, FirstName, lastname
2FROM Contact
3WHERE lastname LIKE 'appl%'
IN IN 値が WHERE 句で指定された値のいずれかに等しい場合、式は true です。次に例を示します。
1SELECT Name FROM Account
2WHERE BillingState IN ('California', 'New York')

IN の値は括弧で囲む必要があります。文字列の値は一重引用符で囲む必要があります。

INNOT IN は、ID (主キー) 項目または参照 (外部キー) 項目をクエリするときに、準結合および反結合でも使用できます。

NOT IN NOT IN 値が WHERE 句で指定された値と等しくない場合、式は true です。次に例を示します。
1SELECT Name FROM Account
2WHERE BillingState NOT IN ('California', 'New York')

NOT IN の値は括弧で囲む必要があり、文字列の値は一重引用符で囲む必要があります。

この比較演算子とは無関係ですが、論理演算子の NOT もあります。

INCLUDES EXCLUDES 複数選択リストにのみ適用されます。

論理演算子

次の表に、fieldExpression 構文で使用される論理演算子の値を示します。

演算子 構文 説明
AND fieldExpressionX AND fieldExpressionY fieldExpressionXfieldExpressionY の両方が true の場合に true
OR fieldExpressionX OR fieldExpressionY fieldExpressionX または fieldExpressionY のいずれかが true の場合に true

OR 句で外部キーの値を使用したリレーションクエリの動作は、API のバージョンによって異なります。OR を使用する WHERE 句でレコードの外部キーの値が null の場合、バージョン 13.0 以降ではレコードが返されますが、13.0 より前のバージョンではレコードが返されません。

1SELECT Id FROM Contact WHERE LastName = 'foo' or Account.Name = 'bar'
親取引先のない取引先責任者は条件を満たす姓が含まれているため、バージョン 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 句の例

1FIND {test}
2    RETURNING Account (id WHERE createddate = THIS_FISCAL_QUARTER)
1FIND {test}
2    RETURNING Account (id WHERE cf__c includes('AAA'))
1FIND {test}
2    RETURNING Account (id), User(Field1,Field2 WHERE Field1 = 'test' order by id ASC, Name DESC)
1FIND {test} IN ALL FIELDS
2    RETURNING Contact(Salutation, FirstName, LastName, AccountId WHERE Name = 'test'),
3        User(FirstName, LastName),
4        Account(id WHERE BillingState IN ('California', 'New York'))
1FIND {test}
2    RETURNING Account (id WHERE (Name = 'New Account')
3        or (Id = '001z00000008Vq7'
4        and Name = 'Account Insert Test')
5        or (NumberOfEmployees < 100 or NumberOfEmployees = null)
6        ORDER BY NumberOfEmployees)
ID で Salesforce ナレッジの記事を検索する
1FIND {tourism}
2    RETURNING KnowledgeArticleVersion (Id, Title WHERE id = 'ka0D0000000025eIAA')
ID で Salesforce ナレッジの複数の記事を検索する
1FIND {tourism}
2    RETURNING KnowledgeArticleVersion
3        (Id, Title WHERE id IN ('ka0D0000000025eIAA', 'ka0D000000002HCIAY'))
緯度座標 37、経度座標 122 の場所から 500 マイル以内にある地理位置情報項目または住所項目が含まれているすべての My_Custom_Object__c オブジェクトの全項目で「San Francisco」を検索する
1FIND {San Francisco}
2    RETURNING My_Custom_Object__c (Id 
3        WHERE DISTANCE(My_Location_Field__c,GEOLOCATION(37,122),'mi') < 100)