使用精确关键字搜索Sqlite数据库

时间:2015-01-25 02:01:21

标签: android sqlite

我正在尝试搜索Sqlite数据库,具有以下条件:我想使用精确关键字找到一个字符串。让我向你解释一下。 我有3行如下:

  • 感冒
  • 我有一只猫
  • 昨天在你家里看到了两只猫

我想用关键字" cat"来搜索这些行。我期待这个结果:

  • 我有一只猫

到目前为止,我正在使用此SQL代码:

Select * FROM MyTable WHERE Mycolumn Like '%cat%'

但是返回结果就是所有这三行:

  • 感冒
  • 我有一只猫
  • 昨天在你家里看到了两只猫

如何才能获得预期的结果?

提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可以使用带有特殊图案边界的正则表达式。

Select * FROM MyTable WHERE Mycolumn = 'cat' 

更正了我的回答我认为应该有效。

答案 1 :(得分:0)

LIKE子句的参数中的%字符匹配任何字符串,包括空字符串。不幸的是,SQLite没有内置的REGEXP功能(Android的SQLite也没有)。

您可以做的是使用FTS(全文搜索)。如何执行此操作在此处描述:https://www.sqlite.org/fts3.html#section_1_2

使用您的示例,您可以这样设置:

create virtual table textsearch using fts4(content);
insert into textsearch (content) values ('catching cold'), ('i have a cat'), ('two cats was seen in your house yesterday')

然后,您可以使用MATCH运算符进行简单的文本查询:

select * from textsearch where content match 'cat';

如果您在sqlite3 shell中尝试上述操作,那么您将看到它只返回“我有一只猫”#39;您可以使用匹配运算符执行更多操作,我在上面链接的页面上进行了解释。