android room查询将如何匹配一列数据?数据是否完全匹配或以搜索字符串开头
这似乎只给了我确切的匹配
从dna_序列表中选择*,如:searchTerm
谢谢
在搜索方法中试试这个:
public String getResultForSearchString(String searchTerm){
String searchExptression=searchTerm+"%";
//.. perform search operation on SQLite with searchExpression
return result;
}
欲了解更多信息,请访问:https://www.sqlitetutorial.net/sqlite-like/
希望有帮助。
这似乎只能给我完全匹配的
select * from table where dna_sequence like :searchTerm
你的查询没有错。问题在于Java或静态编程语言代码。您得到了一个精确的匹配,因为您正在向search chTerm
传递一个精确的匹配,并且没有使用任何通配符。SQL中的like
运算符允许我们在字符串中使用通配符来匹配不仅仅是严格的相等。_
将匹配单个字符,而%
将匹配零或更多字符。如果不使用这些通配符,那么like
将与=< /code>完全相同。因此,您需要为使用这些通配符之一的
search chTerm
传递一个值。例如,如果将DAO接口声明为
@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代码。
问题 你想匹配或者搜索特定模式的文本 解决方案 如果你想匹配的是字面字符串,那么你通常只需要调用基本字符串方法就行, 比如 str.find() , str.endswith() , str.startswith() 或者类似的方法: >>> text = 'yeah, but no, but yeah, but no, but yeah' >>> # Exact match >>> text =
问题内容: 我正在处理长度为25的DNA序列(请参见下面的示例)。我有一个230,000的列表,需要查找整个基因组中的每个序列(弓形虫寄生虫)。我不确定基因组有多大,但是比230,000个序列长得多。 我需要查找25个字符的每个序列,例如()。 基因组被格式化为连续字符串,即() 我不在乎它在哪里或被发现多少次,无论它是否存在。 我认为这很简单- 但是我也要找到一个在任何位置(只有一个位置)被定义
如果我搜索John,就会得到结果(如果我搜索Jo,就会得到event)。但如果我搜索无名氏,显然没有任何结果。 如果我将查询更改为JohnDoe,我会得到结果,但它会返回所有在其最后/名字中有John或Doe的人。 接下来是尝试使用mongoose TextSearch: 有办法解决吗? 没有外部插件的答案是首选的,但其他的也是希望的。
问题内容: 我有一个字符串,其中单词“ LOCAL”多次出现。我使用该函数搜索该单词,但它也返回另一个单词“ Locally”。我如何准确匹配“本地”一词? 问题答案: 对于这种事情,正则表达式非常有用: \ b基本上表示单词边界。可以是空格,标点符号等。 编辑评论: 显然,如果您不想忽略这种情况,则可以删除flags = re.IGNORECASE。
问题内容: 可以说我有一个清单 如何让用户进行通配符搜索? 搜索词:“ th_s” 将返回“ this” 问题答案: 正则表达式可能是解决此问题的最简单方法:
问题内容: 在我的查询中,我想找到与许多LIKE运算符之一匹配的行。我知道这样做的3种方法,但是只有其中一种可以使用索引。 让我们从表开始: 插入样本数据后,我可以执行以下操作: 以上查询正确使用索引。 第二种方式: 该查询将不使用索引。我知道的最后一种方法: 与上一个查询类似,该查询将不使用索引。 这是SQL Fiddle,适用于那些想如何使用这些查询的人:http : //sqlfiddl