Android SQLite Search with OR, AND, in multiple database columns

标签 android sqlite multiple-columns

我想向我的数据库提供一个查询,该查询将搜索一个字符串是否存在于 Column1 或 Column2 中,并且仅当另一个字符串值存在于 Column3 中时才显示它。

这是我在 2 列中搜索的工作代码:

mCursor = db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
                 KEY_TIME, KEY_TITLE, KEY_COLOR, KEY_BODY}, 
                 KEY_BODY + " like '%" + inputText + "%' OR " + KEY_TITLE + " like '%" + inputText + "%'" , null,
                 null, null, KEY_TIME + " DESC", null);

虽然我不知道如何将第三列添加到搜索中。

我试过这个:

mCursor = db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
                     KEY_TIME, KEY_TITLE, KEY_COLOR, KEY_BODY}, 
                     KEY_BODY + " like '%" + inputText + "%' OR " + KEY_TITLE + " like '%" + inputText + "%' AND " + KEY_COLOR + "like '%" + colorvalue + "%'" , null,
                     null, null, KEY_TIME + " DESC", null);

但 AND 仅适用于“TITLE”列,而不适用于两者。我在网上搜索过,但我无法弄明白。

非常感谢您的帮助!

最佳答案

为此你需要使用括号。

mCursor = db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
                 KEY_TIME, KEY_TITLE, KEY_COLOR, KEY_BODY}, 
                 "(" + KEY_BODY + " like '%" + inputText + "%' OR " + KEY_TITLE + " like '%" + inputText + "%') AND (" + KEY_COLOR + " like '%" + colorvalue + "%')" , null,
                 null, null, KEY_TIME + " DESC", null);

希望这对您有所帮助。

关于Android SQLite Search with OR, AND, in multiple database columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16482798/

相关文章:

css - 为什么我的媒体查询不起作用?

android - 添加 Kapt 插件后 - 执行 org.jetbrains.kotlin.gradle.internal.KaptExecution 时发生故障

java - Android:按下项目时会按下可扩展 ListView 项目按钮

android - 通过执行单个任务命令为所有模块运行 Ktlint

c# - 使用 Entity Framework 创建SQLite数据库

r - 将数据框中的两列或多列组合成具有新名称的新列

java - 在 Android Java 应用程序中解释 JavaScript 的最佳方法

Android SQLiteDatabase - 存储和比较大数

mysql - 计算给定列的条目数

python - 删除 pandas 中值不增加的列