我正在尝试搜索 Sqlite 数据库,条件是:我想使用精确关键字查找字符串。让我向你解释一下。 我有 3 行如下:
- 感冒了
- 我有一只猫
- 昨天在你家看到两只猫
我想用关键字“cat”搜索这些行,我希望得到这样的结果:
- 我有一只猫
到目前为止,我正在使用此 SQL 代码:
Select * FROM MyTable WHERE Mycolumn Like '%cat%'
但返回结果是所有这 3 行:
- 感冒
- 我有一只猫
- 昨天在你家看到两只猫
我该怎么做才能获得预期的结果?
提前致谢。
最佳答案
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 中尝试上述操作,您会看到它只返回“我有一只猫”。您可以使用匹配运算符做更多的事情,在我上面链接的页面上有解释。
关于android - 使用精确关键字搜索 Sqlite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28132455/