【发布时间】:2017-08-22 10:51:29
【问题描述】:
我在“谷歌搜索”这个问题时遇到了麻烦,但希望对于专家(甚至中级)来说不会太棘手。
有没有办法在未知数量的多个 OR 条件中搜索子字符串?
Android SQLite Room Persistence DAO 的原始查询是:
SELECT country FROM table WHERE country IN (:searchList)
如果搜索列表 ['Paris, France', 'Berlin, Germany'] 将转换为 SQL:
SELECT country FROM table WHERE country IN ( 'Paris, France', 'Berlin, Germany' );
并且会返回:['Paris, France', 'Berlin, Germany']
但是,我希望能够仅按国家/地区进行搜索。例如,给定一个 ['France', 'Germany'] 的 searchList,我很遗憾没有得到任何结果。
我知道下面的 SQL 可以解决问题:
SELECT country FROM table WHERE country LIKE '%France%' OR country LIKE '%Germany%';
但是,因为我不知道searchList中有多少元素,所以我必须使用原始格式:
SELECT country FROM table WHERE country IN (:searchList)
有没有什么办法可以在国家列中进行上述搜索?
非常感谢您的帮助,
丹
【问题讨论】:
-
由于 androids sqlite (version) 不支持搜索查询中的正则表达式,您可能希望将 List (:searchList) 拆分为单个单词?示例:stackoverflow.com/questions/41678776/…
-
我希望避免拆分 searchList,因为那样我必须对 DB 执行多次调用 - 每个 searchList 元素调用一次。
标签: android sqlite android-sqlite android-room