如果给一个表User_DNA和一个列一个sequence,我想编写一个查询,如果sequence列中的数据与搜索查询词匹配或者是搜索查询词的前缀,那么它应该返回一个item User_DNA或true。例如,
sequence
狗
霍尔
猫
破伤风免疫球蛋白
猫
如果我的搜索查询是doga (在db中以dog作为前缀),horrible(在db中以hor作为前缀),tiger(在db中以tig作为前缀),caterpillar(在db中以cat作为前缀),查询应该返回true,因为所有这些搜索查询在数据库中都有前缀。
我的sql search查询应该是什么?
谢谢
发布于 2020-05-27 16:12:23
如果你使用Room,你可以尝试这样(使用Kotlin):
@Query("select * from User_DNA WHERE sequence LIKE :search")
fun getItem(search: String): UserDNA?将您的狗搜索参数设置为此方法,您应该将搜索模式设置为“您的搜索字符串%”,例如:“%”
如果我的搜索查询是dog,则查询应返回true或其中一项(dogsequence/doggysequence),以有效者为准
您可以检查查询的结果-如果结果为null,则表示您的列中没有匹配值。
已更新
如果你想用“可怕的”来找"hor“,我可以提出下一种方法(也许这是RegExp的一个任务,但说实话,我还没有在房间里用过它):
如下所示:
@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())
}https://stackoverflow.com/questions/62035396
复制相似问题