Sqlite 搜索查询词不应是数据库中任何数据的前缀
给表用户_DNA和列一个序列, 我想写一个查询,如果序列列中的数据匹配或是搜索查询词的前缀,它应该返回一个find或true项。 e、 g, 序列 狗 霍 猫 钨极氩弧焊 猫 如果我的搜索查询是doga在db中以dog作为前缀,horblehas hor在db中作为前缀,tigerhas tig在db中作为前缀,caterpillarhas cat在db中作为前缀,那么查询应该返回true,因为所有这些搜索查询在数据库中都有前缀 我的sql搜索查询应该是什么Sqlite 搜索查询词不应是数据库中任何数据的前缀,sqlite,android-room,Sqlite,Android Room,给表用户_DNA和列一个序列, 我想写一个查询,如果序列列中的数据匹配或是搜索查询词的前缀,它应该返回一个find或true项。 e、 g, 序列 狗 霍 猫 钨极氩弧焊 猫 如果我的搜索查询是doga在db中以dog作为前缀,horblehas hor在db中作为前缀,tigerhas tig在db中作为前缀,caterpillarhas cat在db中作为前缀,那么查询应该返回true,因为所有这些搜索查询在数据库中都有前缀 我的sql搜索查询应该是什么 谢谢如果您使用Room,您可以使用K
谢谢如果您使用Room,您可以使用Kotlin尝试此功能:
@Query("select * from User_DNA WHERE sequence LIKE :search")
fun getItem(search: String): UserDNA?
将搜索参数设置为此方法时,应将搜索模式设置为[your search string]%,例如:dog%
如果我的搜索查询是dog,则查询应返回true或
项目dogsequence/doggysequence什么是有效的
您可以检查查询的结果——如果为null,则列中没有匹配的值
更新
如果你想找到hor,我可以提出下一种方法,也许这是RegExp的任务,但老实说,我还没有在房间里使用过:
您可以在DAO中放置两种方法。一种方法是辅助的,它的任务是用我们想要找到的单词填充一个列表。例如,对于可怕的模式,该方法应该准备带有{恐怖,恐怖,恐怖,恐怖,恐怖,恐怖}的列表。
第二个方法应该从SQLite获取一个结果,您的字段保存步骤1中准备的列表中的值。此方法应使用房间注释进行注释。
所以第一个方法准备列表,调用查询在SQLite中搜索单词,并将其返回到ViewModel或存储库。
大概是这样的:
@Query("select * from User_DNA WHERE sequence IN (:search) ORDER BY sequence")
fun getItem(search: List<String>): User_DNA?
fun findItem(search: String): User_DNA? {
val searchList = mutableListOf<String>()
val minimalStringLength = 2 // it's up to you, maybe 1?
while (search.length > minimalStringLength) {
searchList.add(search)
search = search.dropLast(1)
}
return getItem(searchList.toList())
}
谢谢你的回复,我为我错误地举了一个错误的例子而道歉。我已经更新了问题。若我将搜索词作为数据库中某个项目的前缀,则您的答案是正确的。对此再次表示歉意。第二个比第一个有趣。更新答案。