SOQL と SOSL
Salesforce Object Query Language (SOQL) と Salesforce Object Search Language (SOSL) はそれぞれ、他の多くの Salesforce API 内で使用されるデータクエリ言語とデータ検索言語です。
SOQL を使用するケース
強力なデータクエリ文字列を作成する必要がある場合は常に SOQL を使用します。SOQL は、直接は使用されず、他の Salesforce API 環境を介して使用されます。SOQL の使用例として次のようなものがあります。
- query() および queryAll() SOAP API コール内の queryString パラメータ。
- REST API の query および queryAll リソースで使用されるクエリ要求パラメータ。
- Bulk API の一括クエリ要求のクエリ部分。
- ストリーミング API チャネルの基本を定義する、PushTopic レコードのクエリ項目。
- Apex の通常の動的な SOQL ステートメントのクエリ文字列。
SOQL は、SQL (Structured Query Language) の SELECT ステートメントに似た構文を使用して、オブジェクトおよび項目を指定するために使用されます。たとえば、次の SOQL ステートメントは、すべての Merchandise カスタムオブジェクトレコードのうち、Name の値が「My Merchandise」であるレコードの ID 項目を返します。
1SELECT Id FROM Merchandise__c WHERE Name = 'My Merchandise'SOSL を使用するケース
データ検索文字列を作成する必要がある場合は常に SOSL を使用します。SOSL は、直接は使用されず、他の Salesforce API 環境を介して使用されます。SOSL の使用例として次のようなものがあります。
- search() SOAP API コール内の searchString パラメータ。
- REST API の search リソースで使用される検索要求パラメータ。
- Apex の通常の動的 SOSL ステートメントの検索文字列。
- Visualforce コントローラと getter メソッド。
SOSL は、特殊な検索構文を使用して、組織内のすべてのレコードを対象に検索するためのテキストを指定するために使用されます。たとえば、次の SOSL ステートメントは、組織内のすべてのレコードのうち、いずれかのオブジェクトの Name 項目にテキスト「Joe Smith」または「Dan Fielding」が含まれるレコードの ID を返します。
1FIND {"Joe Smith" OR "Dan Fielding"}
2
3IN NAME FIELDSサポート対象のエディションとプラットフォーム
SOQL と SOSL は、直接アクセスされる API ではないため、SOQL または SOSL を使用する API のサポート対象エディションおよびプラットフォーム情報を参照してください。
すべての API が SOQL や SOSL をサポートしているわけではありません。また、これらを使用する API の中には、使用可能な SOQL 句の一部しかサポートしていないものもあります。たとえば、Bulk API の一括クエリは、ネストされたクエリと COUNT、ROLLUP、SUM、GROUP BY CUBE、および OFFSET 句をサポートしていません。API での SOQL および SOSL のサポート状況を判定するには、使用する各 API の開発者ガイドを参照してください。