【问题标题】:SOQL: Performing Query with both LIKE & INSOQL:使用 LIKE 和 IN 执行查询
【发布时间】:2015-02-10 23:03:50
【问题描述】:

我有一个要对其执行 LIKE 查询的帐户列表。理想情况下,我的查询类似于:

SELECT id, owner.name FROM Account WHERE name LIKE IN :entityList

有什么办法可以做到吗?

问题是我的实体名称来自第三方来源,这意味着名称可能存在细微变化,即

“Bay Ridge apt。” VS“湾岭公寓”

很难预测拼写的差异可能在哪里,我希望 LIKE 过滤器可能是一些神奇的过滤器,可以为我解决这个问题并匹配子字符串(即“Bay Ridge”)。

如何执行此查询?

谢谢!

编辑:Salesforce 指南在其指南中不包含此选项,因此可能无法将 LIKE 和 IN 组合在一起。也许有解决方案? SOQL Comparison Operators

编辑:也许有一种方法可以对列表执行 SOSL 查询?类似的东西:

Find {entityList} In Account

我似乎在任何地方都找不到这个......

【问题讨论】:

    标签: salesforce soql


    【解决方案1】:

    您可以通过循环实现这一点,并根据您的列表进行动态查询。

    String[]  entityList = new String []{'CEO','CFO','CMO','CTO','CIO','COO','VP','DIRECTOR','VIP'};
    
    Boolean first = true;
    query = 'Select Id FROM CONTACT';
    for(String el : entityList){
        if(!first){
            query += ' OR';
        } else {
            query += ' WHERE';
        }
        query = query + ' name LIKE \'%' + el + '%\'';
        first = false;
    }
    

    【讨论】:

    • 这确实有效,但事实证明您甚至不需要包含 IN 运算符 - 这是隐含的
    【解决方案2】:

    事实证明,您不需要同时拥有 LIKE 和 IN。通过将返回值设置为列表,并在查询中引用迭代器,隐含了 IN。此查询同时进行:

    SELECT id, owner.name FROM Account WHERE name LIKE :entityList
    

    请看这里: SOQL: Performing Query with both LIKE & IN

    此外,似乎没有一个很好的方法来批量化 SOSL 查询

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-18
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 2011-03-08
      • 2019-09-08
      • 1970-01-01
      相关资源
      最近更新 更多