如何检查 Room DB android 中的子字符串

问题描述 投票:0回答:1

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
的所有行,但它返回空列表

android database sqlite android-sqlite android-room
1个回答
0
投票

您可以对每个标签使用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%", ...)
© www.soinside.com 2019 - 2024. All rights reserved.