SOQL:使用LIKE和&amp ;;执行查询在

时间:2015-02-10 23:03:50

标签: salesforce soql

我有一个帐户列表,我想要执行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

我似乎无法在任何地方找到这个......

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

原来,你不需要同时拥有LIKE&在。通过将返回值设置为列表,并在查询中引用迭代器,暗示了IN。此查询同时执行以下操作:

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

见这里: SOQL: Performing Query with both LIKE & IN

此外,似乎不是批量化SOSL查询的好方法