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

标签 android sqlite

我正在尝试搜索 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/

相关文章:

javascript - 使用 % 进行查询(ajax+javascript+html)

python - 合并所有具有不同表的 SQLite 数据库

android - 未显示 GCM 通知

java - 无法启动 Android Studio;无法创建 JVM : error code -1

java - android中导入数据库的问题

python - 将新列从 Pandas 添加到 SQLite 表的工作流程

java - 使用onUpgrade备份旧数据库,替换数据库,恢复数据

c - 如何在C中正确进行SQLite SELECT查询?

android - 已解决 : ListView not getting scrolled smoothly and it stucks/crashes while scrolling even with ViewHolder

android - ListView 在 2.x 上改变颜色