Android 中的 Room SQLite 数据库
如果我们有
tags
列,其值为 1023652, 2154781, 1154230
如何编写一个查询来检查
tags
是否包含值 1023652, 1154230
,在本例中为 tags
值的第一个和最后一个值。但在运行时,传递的字符串可能包含字符串任何部分的值。
用例,我有一个名为
tags
的列,它是作为 TEXT
主要类型存储在房间数据库中的字符串列表
在运行时期间,我想动态传递字符串列表并查找 tags
列包含作为参数传递的所有字符串的所有行?
我尝试过像
@Query("SELECT * from ContactInfo WHERE ContactInfo.tags LIKE :argumentTagsString")
这样的查询
我希望返回
tags
列包含 argumentTagsString
的所有行,但它返回空列表
您可以对每个标签使用like
SELECT * from ContactInfo WHERE
ContactInfo.tags LIKE '%1023652%' AND
ContactInfo.tags LIKE '%1154230%'
有房
@Dao
interface ContactInfoDao {
@Query("SELECT * from ContactInfo WHERE (:tag1 IS NULL OR ContactInfo.tags LIKE :tag1) AND (:tag2 IS NULL OR ContactInfo.tags LIKE :tag2) AND ... ")
fun searchByTags(tag1: String?, tag2: String?, ...): List<ContactInfo>
}
并致电
val results = contactInfoDao.searchByTags("%1023652%", "%1154230%", ...)