执行 SOQL 和 SOSL 查询
学习目标
- 使用查询编辑器或在 Apex 代码中执行 SOQL 查询。
- 使用查询编辑器或在 Apex 代码中执行 SOSL 搜索。
什么是 SOQL 查询?
SOQL 表示 Salesforce 对象查询语言。您可以使用 SOQL 读取存储在组织数据库中的信息。SOQL 在语法上类似于 SQL(结构化查询语言)。
您可以在 Apex 代码或 Developer Console 的查询编辑器中编写和执行 SOQL 查询。
执行 SOQL 查询
- 选择调试 | 打开执行匿名窗口。
- 复制并粘贴以下代码并执行代码。此代码可以将三个控制工程师的联系方式添加到数据库中的“联系人”对象中。
// Add first contact and related details Contact contact1 = new Contact( Firstname='Quentin', Lastname='Foam', Phone='(415)555-1212', Department= 'Specialty Crisis Management', Title='Control Engineer - Specialty - Solar Arrays', Email='qfoam@trailhead.com'); insert contact1; // Add second contact and related details Contact contact2 = new Contact( Firstname='Vega', Lastname='North', Phone='(416)556-1312', Department= 'Specialty Crisis Management', Title='Control Engineer - Specialty - Propulsion', Email='vnorth@trailhead.com'); insert contact2; // Add third contact and related details Contact contact3 = new Contact( Firstname='Palma', Lastname='Sunrise', Phone='(554)623-1212', Department= 'Specialty Crisis Management', Title='Control Engineer - Specialty - Radiators', Email='psunrise@trailhead.com'); insert contact3;
现在,我们可以使用查询编辑器编写并执行 SOQL 查询,来查找这些控制工程师。SOQL 查询会在特定对象中搜索数据。您可以在 WHERE 子句中添加可选条件,以缩小搜索范围。 - 在“查询编辑器”选项卡中输入以下查询。
SELECT Name, Phone, Email, Title FROM Contact WHERE (Department = 'Specialty Crisis Management')
- 单击执行。
结果将显示在特种危机管理部门工作的联系人的详细信息。
您可以使用另一个 SOQL 查询来查找其他部门的联系人,还可以查看是否有其他人员为更多控制工程师创建了记录。要重新运行查询,单击“查询结果”面板中的刷新网格。
您使用 Apex 代码执行的 SOQL 查询称为内嵌式 SOQL 查询。我们来看看如何利用 Developer Console,使用内嵌式 SOQL 查询搜索在特种危机管理部门工作的联系人。
- 选择调试 | 打开执行匿名窗口。
- 输入以下代码。
Contact[] theseContacts = [SELECT Name, Phone, Email, Description FROM Contact WHERE (Department='Specialty Crisis Management') ORDER BY Name]; // Log a count of how many contacts were found System.debug(theseContacts.size() + ' contact(s) returned.'); // Log all values in the array of contacts System.debug(theseContacts);
- 执行代码后,打开日志。
- 要仅查看 USER_DEBUG 消息,请选择仅调试。结果可以显示返回的客户数量以及按字母顺序排列的联系方式。
要深入研究 SOQL 查询,请查看 Apex 基本知识和数据库模块。
什么是 SOSL 搜索?
SOSL(Salesforce 对象搜索语言)是一种可以在记录中执行文本搜索的语言。与 SOQL 不同,SOSL 可以同时查询多种类型的对象。SOSL 还可以使用单词匹配来匹配字段,而 SOQL 则需要精确的短语。
使用“危机”一词对联系人记录运行 SOSL 搜索时,搜索会查看所有联系人字段并返回包含该词语的任何记录。但如果在 SOQL 查询中尝试相同的操作,则需要指定要搜索的字段以及要搜索的完整单词或短语。您还可以使用 LIKE
或通配符来缩小 SOQL 或 SOSL 搜索的范围。
执行 SOSL 搜索
- 在“查询编辑器”选项卡中,输入以下 SOSL 查询。请注意,查询中仅包含特种危机管理部门的部分名称。
FIND {Crisis} IN ALL FIELDS RETURNING Contact(FirstName, LastName, Phone, Email, Title)
- 执行查询,然后在“搜索结果”窗格中观察结果。
- 选择调试 | 打开执行匿名窗口。
- 执行以下代码。
List<List<sObject>> searchList = [FIND 'Crisis' IN ALL FIELDS RETURNING Contact(FirstName, LastName, Phone, Email, Description)]; Contact[] searchContacts = (Contact[])searchList[0]; System.debug('Found the following contacts:'); for (Contact c : searchContacts) { System.debug(c.LastName + ', ' + c.FirstName); }
- 打开日志,然后选择仅调试选项。
“执行日志”可以列出控制工程师的姓名。
要了解有关 SOSL 搜索的更多信息,请查看 Apex 基本知识和数据库模块。
当您在测试使用 SOQL 和 SOSL 操作时,您刚刚找到其联系方式的控制工程师们也已将飞船转舵到小行星的运行轨道之外。事实证明,指挥一艘飞船一点都不难:只要有一个好的控制台,并学会委派即可!
您已经成功避免了与小行星 2014 QO441 的碰撞,您决定降落在海王星空间站,好好休息一下。了解 Developer Console 的各种功能和特性后,您就可以指导组织成功完成许多任务。