公式字段实现:校验Field A或Field B首词为‘Spring’的方案求助
可落地方案说明
原有逻辑的缺陷修正
你之前写的首词提取公式 LEFT(Field_A__c, FIND(" ", Field_A__c) -1) 存在两个高频报错/匹配错误的场景:
- 当字段仅含1个词(无空格)时,
FIND(" ", 字段)找不到空格会直接抛出公式错误 - 未处理字段首尾的多余空格(如输入
" Spring "这类带前后空格的脏数据时,提取的首词会带空格导致匹配失败)
第一步:替换为鲁棒版首词提取公式
不管是单独建首词提取的文本字段,还是直接在判断公式里用,都先把提取逻辑换成覆盖「空值/单无空格/带空格」场景的版本:
把
{TargetField}替换为实际字段名即可复用
IF( ISBLANK({TargetField}), "", IF( NOT(CONTAINS(TRIM({TargetField}), " ")), TRIM({TargetField}), LEFT(TRIM({TargetField}), FIND(" ", TRIM({TargetField})) - 1) ) )
逻辑说明:
- 先通过
TRIM()去除字段首尾多余空格,避免脏数据干扰 - 先判断字段是否包含空格:无空格则整个去尾后的字段就是首词;有空格则提取第一个空格前的内容
第二步:实现「首词为Spring」的判断
方案1:已有提取首词的文本公式字段(推荐,易维护)
如果你已经建好了 Field_A_First_Word__c、Field_B_First_Word__c 两个首词提取字段,先把这两个字段的逻辑替换为上面的鲁棒版提取公式,之后直接建复选框判断字段:
默认不区分大小写(匹配Salesforce常规文本规则)
OR( Field_A_First_Word__c = "Spring", Field_B_First_Word__c = "Spring" )
需严格区分大小写(要求必须是大写S的「Spring」才命中)
OR( EXACT(Field_A_First_Word__c, "Spring"), EXACT(Field_B_First_Word__c, "Spring") )
方案2:不单独建提取字段,直接在复选框公式里写完
如果不想额外建两个提取首词的文本字段,直接用下面的完整公式:
默认不区分大小写版本
OR( IF( ISBLANK(Field_A__c), false, IF( NOT(CONTAINS(TRIM(Field_A__c), " ")), TRIM(Field_A__c) = "Spring", LEFT(TRIM(Field_A__c), FIND(" ", TRIM(Field_A__c)) - 1) = "Spring" ) ), IF( ISBLANK(Field_B__c), false, IF( NOT(CONTAINS(TRIM(Field_B__c), " ")), TRIM(Field_B__c) = "Spring", LEFT(TRIM(Field_B__c), FIND(" ", TRIM(Field_B__c)) - 1) = "Spring" ) ) )
严格区分大小写版本
把上面所有的 ="Spring" 替换为 EXACT(对应提取内容, "Spring") 即可。
边界场景校验参考
可以用以下测试用例验证逻辑正确性:
- 单字段无空格:
Field_A__c = "Spring"→ 命中 - 两空格分隔词:
Field_A__c = "Spring Boot"→ 命中 - 带前后空格:
Field_A__c = " spring "→ 不区分大小写版本命中,严格版本不命中 - 首词为复数/连写:
Field_A__c = "Springs Boot"、Field_A__c = "SpringBoot"→ 不命中 - 首词不是Spring:
Field_A__c = "Summer Spring"→ 不命中 - 空值场景:
Field_A__c = ""、Field_B__c = "Spring"→ 命中
内容的提问来源于stack exchange,提问作者Marci K.
相关产品推荐
相关产品推荐

