You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Salesforce SQL查询如何正确匹配含撇号的姓氏(如O'Brien)

Salesforce SOQL 带撇号姓氏筛选写法修正

你当前的查询存在3个核心问题:

  • 转义规则用错:%27是URL场景下的单引号编码,在SOQL语句内部无效。SOQL对字符串内单引号的转义规则是连续写两个单引号,例如要匹配O'Brien,字符串值要写为'O''Brien'。
  • 条件逻辑优先级错误:SOQL中AND的运算优先级高于OR,你当前写法里最后一个OR条件会绕过前面所有的团队、状态筛选规则,只要姓氏匹配错误规则就会返回结果,和预期筛选逻辑完全不符。
  • 匹配值写了无效字符:条件里的"是HTML转义的双引号,属于多余无效内容,无法匹配到目标数据。

如果你的筛选需求是:Comp_id为1234、成员状态为Active Member、机会状态为Active,且姓氏要么以Test开头、要么包含撇号(即O'Brien这类带单引号的姓氏),修正后的正确语句如下:

SELECT 
     o.Id
    ,Member_RecordHidden__r.Member_ID__c
    ,Member_RecordHidden__r.FirstName
    ,Member_RecordHidden__r.LastName
    ,Member_RecordHidden__r.Date_of_birth__c
    ,Member_RecordHidden__r.Gender__c
    ,Member_RecordHidden__r.Member_Status__c
    ,Team_Name__c
    ,Team__c
    ,Last_Visit_Date__c
    ,Status__c
FROM Opportunity o
WHERE 
    Team__r.Comp_id__c = '1234' 
    AND Member_RecordHidden__r.Member_Status__c = 'Active Member' 
    AND Status__c = 'Active' 
    AND (
        Member_RecordHidden__r.LastName LIKE 'Test%' 
        OR Member_RecordHidden__r.LastName LIKE '%''%'
    )

补充说明:

如果你不需要匹配所有带撇号的姓氏,只需要精确匹配O'Brien这类特定值,直接把对应条件改为Member_RecordHidden__r.LastName = 'O''Brien'即可。单值等值判断用=比IN执行效率更高,原语句SELECT子句中Team_Name__c, Team__c前多余的逗号已经移除,符合SOQL书写规范。

内容的提问来源于stack exchange,提问作者lorr81

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:06:22