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

比較演算子

比較演算子 (=、!=、<、>、LIKE、IN など) は、SOQL クエリの SELECT ステートメントに含まれる WHERE 句の項目式に使用できます。準結合と反結合を使用してより複雑なクエリを作成することもできます。

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 とは一致しません。
IN IN 値が WHERE 句で指定された値のいずれかに等しい場合、式は true です。次に例を示します。

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

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

NOT IN NOT IN 値が WHERE 句で指定された値と等しくない場合、式は true です。次に例を示します。

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

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

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

IN を使用した準結合と NOT IN を使用した反結合

IN を使用して、同じオブジェクトの別の項目に、指定された値のセットがある項目の値を照会できます。次に例を示します。

さらに、IN または NOT IN 句内の値リストをサブクエリで置き換えることにより、より複雑なクエリを作成できます。サブクエリでは、ID (主キー) 項目または参照 (外部キー) 項目で絞り込むことができます。準結合は、返されるレコードを制限する、IN 句の別のオブジェクトのサブクエリです。反結合は、返されるレコードを制限する、NOT IN 句の別のオブジェクトのサブクエリです。

準結合と反結合を使用する例としては、次のようなものがあります。

  • 特定のレコード種別の商談がある取引先のすべての取引先責任者を取得する。
  • 有効な���約がある取引先のすべての進行中の商談を取得する。
  • 商談の意思決定者である取引先責任者のすべてのオープンケースを取得する。
  • 進行中の商談がないすべての取引先を取得する。

ID 項目で絞り込む場合は、AccountContact など、親-子の準結合または反結合を作成できます。参照項目で絞り込む場合は、ContactOpportunity などの子-子の準結合か反結合、または OpportunityAccount などの子-親の準結合か反結合を作成できます。

ID 項目の準結合
WHERE 句には準結合を含めることができます。たとえば、次のクエリは、関連付けられている商談が不成立だった場合に取引先 ID を返します。

この例は、AccountOpportunity の親-子の準結合です。IN 句の左のオペランド Id が ID 項目です。サブクエリは、比較対象の項目と同じ種別の項目を 1 つ返します。不要な処理が行われないようにする制限の一覧については、このセクションの最後を参照してください。

参照項目の準結合
次のクエリは、Twin Falls のすべての取引先責任者の ToDo ID を返します。

IN 句の左のオペランド WhoId が参照項目です。このクエリの興味深い側面は、WhoId が、取引先責任者またはリードを参照できるため多態的な参照項目であるということです。サブクエリによって、結果は取引先責任者に制限されます。

ID 項目の反結合
次のクエリは、進行中の商談がないすべての取引先の取引先 ID を返します。
参照項目の反結合
次のクエリは、供給元がWeb 以外のすべての取引先責任者の商談 ID を返��ます。

この例は、OpportunityContact の子-子の反結合です。

複数の準結合または反結合
クエリでは、準結合句または反結合句を組み合わせることができます。たとえば、次のクエリは、取引先に関連付けられている取引先責任者の姓が「Apple」のような姓の場合、進行中の商談がある取引先 ID を返します。

1 つの準結合クエリまたは反結合クエリでは、最大で 2 つのサブクエリを使用できます。また、複数の準結合および反結合クエリは、1 クエリあたりのサブクエリに対する既存の制限の対象となります。

リレーションクエリを評価する準結合または反結合
SELECT 句でリレーションクエリを評価する準結合または反結合を作成できます。たとえば次のクエリは、商談の品目の合計値が $10,000 を超える場合、商談 ID および関連品目を返します。

準結合および反結合クエリには多大な処理作業が必要となるため、Salesforce では可能な限り最良のパフォーマンスを維持するために次の制限を定めています。

  • 基本制限:
    • 1 つの WHERE 句で IN または NOT IN ステートメントを 2 つまで使用できます。
    • 準結合および反結合と NOT 演算子は一緒に使用できません。併用すると、準結合が反結合に、反結合が準結合に変換されます。NOT 演算子を使用する代わりに、適切な準結合または反結合形式でクエリを記述します。
  • 主クエリの制限:

    次の制限は、準結合または反結合クエリの主 WHERE 句に適用されます。

    • 左のオペランドは、1 つの ID (主キー) 項目または参照 (外部キー) 項目を照会する必要があります。サブクエリで選択した項目は、参照項目にできます。次に例を示します。
    • 左のオペランドにはリレーションを使用できません。たとえば、次の準結合クエリは Account.Id リレーション項目があるため無効です。
  • サブクエリの制限:
    • サブクエリは、主クエリと同じオブジェクト種別を参照する項目を照会する必要があります。
    • サブクエリ内で一致したレコードの数に制限はありません。主クエリには標準の SOQL クエリの制限が適用されます。
    • サブクエリで選択した列は、外部キー項目であることが必要で、リレーションをトラバースすることはできません。つまり、この制限により、サブクエリの選択した項目でドット表記は使用できません。たとえば、次のクエリは有効です。

      AccountId の代わりに Account.Id (ドット表記) を使用することはサポートされていません。同様に、Contact.AccountId FROM Case のようなサブクエリは無効です。

    • サブクエリで主クエリのオブジェクトと同じオブジェクトは照会できません。そのような自己準結合クエリは、準結合または反結合を使用せずに記述できます。たとえば、次の自己準結合クエリは無効です。
      ただし、次のような有効な形式で簡単にクエリを記述し直すことができます。
    • 準結合または反結合ステートメントを別の準結合または反結合ステートメント内にネストできません。
    • WHERE ステートメントで準結合と反結合を使用できますが、サブクエリの WHERE ステートメントでは使用できません。たとえば、次のクエリは有効です。

      次のクエリは、ネストされたクエリが 1 つ下のレベルなので無効です。

    • サブクエリと OR を組み合わせて使用することはできません。
    • COUNTFOR UPDATEORDER BYLIMIT はサブクエリではサポートされていません。
    • 現在、サブクエリでは次のオブジェクトはサポートされていません。
      • ActivityHistory
      • Attachments
      • Event
      • EventAttendee
      • Note
      • OpenActivity
      • Tags (AccountTag、ContactTag、その他すべてのタグオブジェクト)
      • Task