function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion


What is the major difference between SOQL and SOSL?




SOQL Statements

SOQL statements evaluate to a list of sObjects, a single sObject, or an Integer for count method queries.

For example, you could retrieve a list of accounts that are named Acme:

 List<Account> aa = [select id, name from account where name = 'Acme'];

From this list, you can access individual elements:

 if (!aa.isEmpty()) {

   // Execute commands 



You can also create new objects from SOQL queries on existing ones. The following example creates a new contact for the first account with the number of employees greater than 10:


 Contact c = new Contact(account = [select name from account

    where NumberofEmployees > 10 limit 1]);

c.FirstName = 'James';

c.LastName = 'Yoyce';


Note that the newly created object contains null values for its fields, which will need to be set.

The count method can be used to return the number of rows returned by a query. The following example returns the total number of contacts with the last name of Weissman:


 Integer i = [select count() from contact where lastname = 'Weissman'];


You can also operate on the results using standard arithmetic:


 Integer j = 5 * [select count() from account];


SOSL Statements         


SOSL statements evaluate to a list of lists of sObjects, where each list contains the search results for a particular sObject type. The result lists are always returned in the same order as they were specified in the SOSL query.SOSL queries are only supported in Apex classes and anonymous blocks. You cannot use a SOSL query in a trigger. If a SOSL query does not return any records for a specified sObject type, the search results include an empty list for that sObject.

 For example, you can return a list of accounts, contacts, opportunities, and leads that begin with the phrase map:


 List<List<SObject>> searchList = [FIND 'map*' IN ALL FIELDS RETURNING Account (id, name), Contact, Opportunity, Lead]; Account [] accounts = ((List<Account>)searchList[0]);


Contact [] contacts = ((List<Contact>)searchList[1]);

Opportunity [] opportunities = ((List<Opportunity>)searchList[2]);

Lead [] leads = ((List<Lead>)searchList[3]);


Did this answer your question? If not, let me know what didn't work, or if so, please mark it solved.