SOQLで条件句にロングテキストエリア型を指定した場合にエラー
イシュー
- SOQLでは、ロングテキスト型の条件検索ができない。
EXCEPTION_THROWN|[136]|System.QueryException: field 'Description' can not be filtered in query call
- さて、どうすっか、、
参考
- SOQLでのロングテキストエリア項目とLike演算子について - Salesforce Developer Community
- たいていのことは、「気合い」と「根性」で乗り越えられるものだ!!:2010年07月
- Salesforce レポート 検索条件 "次の文字列を含む" - おでかけしましょ
- SQL script error: can not be filtered in query ... | Qlik Community
- Workaround for QueryException: field can not be filtered in query call - Salesforce Developer Community
- SOSL
- Filtering by Long Text Area field in SOQL - Salesforce Stack Exchange
- とりあえずSELECTで取得して、contains で文字列が含まれるかを調べる例
SOSL
- Find検索だと、ロングテキスト型も対象になる。
参考
こんな感じでいける
public main(){ String value = 'search word'; List<Case> cases = [ SELECT Id, Name FROM Case WEHRE Id IN :searchIds(value) ]; } private Set<Id> searchIds(String searchWord) { // Description を SOSL検索 String findQuery = 'FIND \'' + searchWord + '\' IN ALL FIELDS RETURNING Case'; List<List<sobject>> results = search.query(findQuery); Set<Id> ids = new Set<Id>(); for(List<sobject> result: results){ for(sobject obj : result){ ids.add(obj.Id); } } return ids; }