一、SOQL(Salesforce Object Query Language,Salesforce对象查询语言):
1.使用场合:已知数据在哪个object中
2.注意点:
(1)在SOQL中,SELECT语句不能使用通配符(*)来查询。如果想要查询全部字段,可以使用下面的方式:
①SELECT FIELDS(ALL) FROM OBJECT 查询object的全部字段
②SELECT FIELDS(CUSTOM) FROM OBJECT 查询object的自定义字段
③SELECT FIELDS(STANDARD) FROM OBJECT 查询object的标准字段
(2)如果查找的内容中包括单引号,那么要在前面加上转义符【\】,例如:
SELECT Id FROM Account WHERE Name LIKE 'Bob\'s BBQ'
(3)SOQL查询语句也可以使用别名命名Object,如Account a。
(4)LIKE关键字:
①LIKE支持%和_,%代表0个以及以上字符,_代表一个字符。
②LIKE后面的值要用单引号括起来,并且LIKE只支持文字列查询。
③LIKE的查询不区分大小写。
(5)IN关键字:查询多个符合条件的数据,相反的关键字是NOT IN。
(6)IN /NOT IN关键字限制:
①一个WHERE句中最多只能用两个IN或NOT IN。
②准結合和反結合不能和NOT关键字一起使用
(7)INCLUDES和EXCLUDES关键字:用于选择list中的包含和不包含。
(8)准結合:在查询中的IN关键字包含子查询。
SELECT Id, Name
FROM Account
WHERE Id IN
( SELECT AccountId
FROM Opportunity
WHERE StageName = 'Closed Lost'
)
反结合:在查询中的NOT IN关键字包含子查询。
SELECT Id
FROM Account
WHERE Id NOT IN
(SELECT AccountId
FROM Opportunity
WHERE IsClosed = false
)
(9)SOQL中的日期类型查询:
①日期类型:YYYY-MM-DD,如1999-01-01
时间类型:YYYY-MM-DDThh:mm:ssZ,如1999-01-01T23:01:01Z
②查询的时候,在日期外面不能用引号。
③日期类型的最小值:1700-01-01T00:00:00Z GMT
日期类型的最大值:4000-12-31T00:00:00Z GMT
例子:SELECT ID FROM ACCOUNT WHERE CREATEDDATE > 1999-01-01T23:01:01Z
(10) ORDER BY:
①NULLS FIRST 或 NULLS LAST:查询结果中null值排在最前面还是最后面。默认是最前面。
②注意点:
· ORDER BY的内容不区分大小写。
· ORDER BY支持多列排序。
· ORDER BY排序的方法是根据语言环境决定的。英语环境的时候,按照UTF-8来排序。亚洲语言时,用ISO 14651和Unicode 3.2来排序。
· ORDER BY不支持下列类型的排序:
复数选择list
Rich Text Area
Long Text Area
暗号化 (有効な場合)
データカテゴリグループの参照 (Salesforce ナレッジが有効な場合)
(11)LIMIT:
如果SELECT中有函数,那么就不能使用LIMIT。
(12)使用UPDATE TRACKING可以更新项目追迹。如:
SELECT Title FROM FAQ__kav
WHERE Keyword='Apex' and
Language = 'en_US' and
KnowledgeArticleVersion = 'ka230000000PCiy'
UPDATE TRACKING
(13)使用UPDATE VIEWSTAT可以更新参照統計。如:
SELECT Title FROM FAQ__kav
WHERE PublishStatus='online' and
Language = 'en_US' and
KnowledgeArticleVersion = 'ka230000000PCiy'
UPDATE VIEWSTAT
(14)FORMAT()函数可以根据用户的本地设定来格式化查询数据。如:
SELECT FORMAT(amount) Amt, format(lastModifiedDate) editDate
FROM Opportunity
editDate = "7/2/2015 3:11 AM"
Amt = "AED 1,500.000000 (USD 1,000.00)"
(15)FOR UPDATE : 用于锁定(lock)查询结果。如下:
Account [] accts = [SELECT Id FROM Account LIMIT 2 FOR UPDATE];
使用这个语句时,不仅当前数据被锁定,相关联的数据也会被锁定。
(16)计算函数:可以用于SELECT中的函数。
①AVG():计算平均值,如:
SELECT AVG(Amount)
FROM Opportunity
②COUNT():计算查询结果返回的行数。(括号中可以添加字段名)
③COUNT_DISTINCT():返回结果去重、去NULL。
④MIN():最小值
⑤MAX():最大值
⑥SUM():合计值
(17)日期函数:
CALENDAR_MONTH():返回date类型的月份。
CALENDAR_QUARTER():返回date类型的季度。
CALENDAR_YEAR():返回date类型的年份。
DAY_IN_MONTH():返回date类型是当月的第几天。
DAY_IN_WEEK():返回date类型是星期几。(星期日是1)
DAY_ONLY():只显示date类型的日期部分。
HOUR_IN_DAY():返回dateTime类型的时间部分。
WEEK_IN_MONTH():返回date类型是该月的第几周。
WEEK_IN_YEAR():返回date类型是该年的第几周。
(18)OFFSET(偏移):
①作用:可以将SOQL的查询结果分页
②示例:
SELECT Name FROM Account LIMIT 100
OFFSET 10
(这个语句的意思是跳过查询结果的前10条数据,从第11条数据开始显示)
二、SOSL(Salesforce Object Search Language):
(1)默认情况下,SOSL会扫描所有的实体。会返回最多2000件符合的记录。
(2)SOSL语法格式:FIND {SearchQuery},当SearchQuery超过10000文字的场合,无法返回结果;当SearchQuery超过4000文字的场合,会删除SearchQuery中的所有逻辑运算符。
(3)FIND通配符:
①*:代表0个及以上的文字
②?:代表1个文字
(4)例子(注:FIND后面的SearchQuery一般不需要加引号,但是如果有and或or的情况,则需要用引号):
①FIND {Joe Smith} //在系统中查询Joe Smith文字(不分大小写),结果返回记录的ID。
②FIND {Joe Smith}
IN Name Fields
RETURNING lead //在lead表中的Name字段查找Joe Smith文字,结果返回记录的ID。
③FIND {Joe Smith}
IN Name Fields
RETURNING lead(name, phone) //在lead表中的Name字段查找Joe Smith文字,结果返回记录的name和phone。
④FIND {Joe Smith}
IN Name Fields
RETURNING lead (name, phone Where createddate = THIS_FISCAL_QUARTER) //在lead表中的Name字段查找Joe Smith文字,结果返回记录的name和本季度作成的电话号码。
⑤FIND {"Joe Smith" OR "Joe Smythe"}
IN Name Fields
RETURNING lead(name, phone), contact(name, phone) //在lead表和contact中的Name字段查找Joe Smith或Joe Smythe,结果返回记录的name和phone。
⑥FIND {Joe Sm*} //在系统中查找以Joe Sm开头的文字,结果返回记录的ID。
⑦FIND {Joe Sm*} LIMIT 10 //在系统中查找以Joe Sm开头的文字,结果返回记录的ID。(只返回10条数据)
⑧FIND {MyProspect} IN ALL FIELDS //在所有字段中检索MyProspect文字
⑨注意:在查找 & | ! ( ) { } [ ] ^ " ~ * ? : \ ' + - 等特殊字符时,需要在前面加上转义符/。