Одним из самых часто используемых инструментов Apex является SOQL запрос. Многие согласятся, что было бы полезно иметь под рукой краткую “шпаргалку” по особенностям использования SOQL
. Думаю, с базовым синтаксисом SOQL
запросов знакомы все, поэтому остановлюсь на некоторых особенностях – совместном использовании операторов LIKE
и IN
в SOQL запросах.
Мы используем оператор LIKE
для того, чтобы найти записи, одно из текстовых полей которых содержит определенную строку, например:
List<Account> accountList = [SELECT Id FROM Account WHERE Name LIKE ‘%ABC%’];
Данный запрос найдет все Account-ы, у которых в поле Name
есть строка ABC.
Оператор IN
мы используем, чтобы найти записи, одно из полей которых содержит значение, находящееся в List или Set, например:
Set<String> setAccountNames = new Set<String>{'ABC', 'XYZ', 'RST'};
List<Account> accountList = [SELECT Id FROM Account WHERE Name IN :setAccoountNames];
Данный запрос найдет все Account-ы, у которых поле Name
равно ABC, XYZ или RST.
Теперь совместим функциональность LIKE
и IN
. Допустим, я хочу найти все Account-ы, у которых поле Name
содержит строки ABC, XYZ или RST. Для этого мы создаем
Set<String> setAccountNames = new Set<String>{'%ABC%', '%XYZ%', '%RST%'};
и делаем запрос
List<Account> accountList = [SELECT Id FROM Account WHERE Name LIKE :setAccountNames];
Данный запрос найдет все Account-ы, у которых поле Name
содержит ABC, XYZ или RST.