Salesforceの検索で使える論理演算子まとめ

# Salesforceの検索機能における論理演算子の違いをまとめました📊

グローバル検索は便利だけど一部制限があり、リストビューは条件設定が可能、本格的な論理検索はSOQLが最適です。
検索タイプごとの違いを理解して、業務効率アップにつなげましょう！

Salesforceの検索機能は非常に強力ですが、論理演算子の使い方については混乱しやすいポイントです。この記事では、Salesforceの各検索インターフェースでどのように論理演算子が使えるのか、実用的な視点からまとめていきます。

## グローバル検索の特徴と制限

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/192c2f73-a3d2-426d-a8ae-b01ae2482d06.png)

グローバル検索（画面上部の検索バー）は便利ですが、論理演算子の使用に関しては一部制限があります。

- **できること**：
  - スペース区切りで複数キーワードを指定（AND検索）
  - OR演算子を使用した検索（例：acme OR california）
  - AND NOT演算子を使用した除外検索（例：acme AND NOT california）
  - 括弧 () を使った検索用語のグループ化
  - 引用符 "" を使った完全一致フレーズ検索
  - 設定されたオブジェクト名やレコードの主要項目の検索
  - 部分一致・前方一致検索

- **制限されていること**：
  - 特定フィールドのみを対象とした検索
  - 複雑な条件検索
  - 検索結果は関連性スコアに基づいて表示されるため、厳密なブール検索とは異なる

例えば、「東京」と「営業」の両方を含む取引先を検索したい場合は：

```
東京 営業
```

または

```
東京 AND 営業
```

と入力できます。「東京」または「大阪」を含むレコードを検索したい場合は：

```
東京 OR 大阪
```

と入力できます。また、「東京」を含むが「大阪」を含まないレコードを検索したい場合は：

```
東京 AND NOT 大阪
```

と入力できます。ただし、検索結果は関連性スコアに基づいて表示されるため、厳密なブール検索とは結果が異なる場合があります。

## リストビュー検索の可能性

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/da6fa42c-a9ab-42f9-8e54-7936e2682ddd.png)

リストビューではより高度な検索が可能になります：

- フィルター条件を使って擬似的な論理演算子の使用
- フィールド単位での条件設定
- 複数条件の組み合わせ（基本はAND条件）
- 「条件グループ」機能（カスタムロジック）を使用した場合のみ本格的なOR条件が可能

しかし、完全な自由度はなく、UIから設定できる範囲に制限されています。標準機能ではAND条件が基本であり、本格的なOR条件を実現するには「条件グループ」とカスタムロジックの設定が必要です。また、オブジェクトの種類によっては条件グループ機能が制限されている場合もあるため、すべてのリストビューで高度な論理条件が設定できるとは限りません。条件グループ機能が使えないオブジェクトでOR条件を使用したい場合は、SOQLを使用したビューの作成などの代替手段を検討する必要があります。

## SOQLで実現する本格的な論理検索

![salesforce-soql-search.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/a32cf09b-11a8-42d3-8ff8-3406096ce7d2.png)

開発者や管理者向けですが、SOQLを使うと真の論理演算子の力を発揮できます：

```sql
SELECT Id, Name 
FROM Account 
WHERE (Industry = 'Technology' OR Industry = 'Finance') 
AND (AnnualRevenue > 1000000)
```

SOQLでは：
- AND/OR/NOTの完全サポート
- 括弧 ( ) を使った演算子の優先順位指定
- フィールド単位での詳細な条件指定
- 複雑な条件の組み合わせ

## Einstein Search

Einstein Searchを有効化している場合：

- 自然言語に近い検索クエリのサポート（「東京または大阪の取引先」など）
  - ※日本語環境では英語に比べて自然言語サポートの範囲が限定的な場合がある
- より直感的な検索体験
- しかし、SOQLほどの細かい論理演算子の制御はできない
- AI推論ベースのため、意図した厳密な条件検索にならないことがある
- 精度は保証されず、あくまで利便性重視の機能
- 管理者は検索対象のフィールドやオブジェクトをEinstein Search設定でカスタマイズ可能

## 実用的な検索シナリオと対処法

### シナリオ1: 類似名称の区別

「株式会社ABC」と「ABCホールディングス」を区別したい場合：
- グローバル検索：引用符 "" を使って「"株式会社ABC"」と検索
- 解決策：リストビューでフィルターを追加するか、SOQLを使用

### シナリオ2: 複数条件の組み合わせ

「東京の金融業界の取引先」を検索したい場合：
- グローバル検索：「東京 金融」と入力可能（または「東京 AND 金融」）
- 解決策：より正確な結果を得るにはリストビューで業種=金融業、都道府県=東京 とフィルター設定

### シナリオ3: 除外検索

「Webサイトが設定されていない取引先」を検索：
- グローバル検索：直接不可能
- 解決策：リストビューでWebサイト=空白 というフィルター、またはSOQLで `Website = null`

## 検索機能別の論理演算子対応表

| 検索タイプ | AND | OR | NOT | 括弧 () | 特定フィールド指定 |
|------------|-----|----|----|---------|-------------------|
| グローバル検索 | ○(スペース区切り/AND) | ○ | ○(AND NOT) | ○ | × |
| リストビュー検索 | ○ | △(制限あり) | △(空白/非空白) | × | ○ |
| SOQL | ○ | ○ | ○ | ○ | ○ |
| Einstein Search | △(自然言語) | △(自然言語) | △(自然言語) | × | △(部分的) |

△：部分的に対応。操作方法や設定状況によって挙動が異なる場合あり。

## 検索効率を上げるためのヒント

1. **検索レイアウトのカスタマイズ**：管理者は「設定」>「オブジェクトマネージャ」>「検索レイアウト」で検索対象フィールドを調整できます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/07b5d6e8-e6ca-4241-833e-47eb3f694df4.png)

2. **リストビューの活用**：頻繁に使う検索条件はカスタムリストビューとして保存しましょう
3. **レポートの活用**：複雑な条件検索はレポートで作成すると再利用性が高まります
4. **開発者コンソール**：開発者は開発者コンソールでSOQLを直接実行して検索結果を取得できます

## まとめ

![salesforce-search-summary (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/88e12ad5-b56f-4b5d-95df-8d3845b08ab3.png)

Salesforceの検索機能は、使用するインターフェースによって論理演算子の対応状況が異なります。日常的な検索にはグローバル検索やリストビューで十分ですが、より複雑な検索条件が必要な場合はSOQLを活用することで、真の論理検索の力を引き出すことができます。

検索機能の特性をまとめると：

- **グローバル検索**：AND、OR、NOT演算子をサポートするが、関連性スコアに基づく検索のため、厳密なブール検索結果とは異なる場合がある
- **リストビュー**：完全なOR条件を実現するにはカスタムロジックが必要
- **Einstein Search**：自然言語推論であり、SOQLのような厳密な制御は不可能
- **SOQL**：本当に正確な絞り込みが必要な場合の最適な選択肢
- **レポート**：検索というよりデータ抽出・集計に特化したツール

最も重要なのは、目的に応じた適切な検索方法を選択することです。単純な名前検索ならグローバル検索、条件付き検索ならリストビュー、高度な組み合わせ検索ならSOQLというように、状況に応じた使い分けが効率的なSalesforce活用の鍵となります。絶対的な精度が必要な複合条件検索の場合は、迷わずSOQLを選び、データの集計や分析が目的であればレポートを活用しましょう。

## 免責事項
本記事の作成にあたり、文章や図解の生成にClaude Sonnetを、ファクトチェックにGenSparkを活用しました。最終的な編集と確認は筆者が行っています。