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

Searching Sqlite Database using Exact Keyword

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


我想用关键字 "cat" 搜索这些行,我希望得到这样的结果:


目前我正在使用这个 SQL 代码:

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

但返回结果是所有这 3 行:

我该怎么做才能获得预期的结果?

提前致谢。

您可以使用具有特殊字边界模式的正则表达式。

Select * FROM MyTable WHERE Mycolumn = 'cat' 

更正了我的答案,我认为应该可以。

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 中尝试上述操作,您将只看到 returns 'i have a cat'。您可以使用匹配运算符做更多事情,在我上面链接的页面上有解释。