android的room查询应该是什么来匹配一个列数据,或者以搜索字符串开始这似乎只给了我确切的匹配 select * from table where dna_sequence like :searchTerm 谢谢
select * from table where dna_sequence like :searchTerm
t1rydlwq1#
这似乎只给了我确切的匹配
你的问题没有错。问题出在java或kotlin代码上。你得到的是一个精确匹配,因为你传递的是一个精确匹配 searchTerm 不使用任何通配符。这个 LIKE sql中的运算符允许我们在字符串中使用通配符来匹配不仅仅是严格相等。 _ 将匹配单个字符 % 将匹配零个或多个字符。如果不使用这些通配符 LIKE 将与 = . 所以你需要传递一个值 searchTerm 使用通配符之一的。例如,如果您将一个dao接口声明为
searchTerm
LIKE
_
%
=
@Dao public interface MyDao { @Query("SELECT * FROM foo WHERE search like :searchTerm") public Foo[] getFooSearch(String searchTerm); }
您可以通过以下方式调用该方法:
MyDao dao; dao.getFooSearch("abcdef%");
它将匹配字符串的开头。注意:这个例子有点做作,因为您只提供了sql查询,没有为dao或数据实体提供任何java或kotlin代码。
1zmg4dgp2#
在搜索方法中尝试以下操作:
public String getResultForSearchString(String searchTerm){ String searchExptression=searchTerm+"%"; //.. perform search operation on SQLite with searchExpression return result; }
有关更多信息,请访问:https://www.sqlitetutorial.net/sqlite-like/希望有帮助。
2条答案
按热度按时间t1rydlwq1#
这似乎只给了我确切的匹配
你的问题没有错。问题出在java或kotlin代码上。你得到的是一个精确匹配,因为你传递的是一个精确匹配
searchTerm
不使用任何通配符。这个LIKE
sql中的运算符允许我们在字符串中使用通配符来匹配不仅仅是严格相等。_
将匹配单个字符%
将匹配零个或多个字符。如果不使用这些通配符LIKE
将与=
. 所以你需要传递一个值searchTerm
使用通配符之一的。例如,如果您将一个dao接口声明为您可以通过以下方式调用该方法:
它将匹配字符串的开头。
注意:这个例子有点做作,因为您只提供了sql查询,没有为dao或数据实体提供任何java或kotlin代码。
1zmg4dgp2#
在搜索方法中尝试以下操作:
有关更多信息,请访问:https://www.sqlitetutorial.net/sqlite-like/
希望有帮助。