android - 复杂的 sqLite 查询 LIKE 子句

标签 android mysql database sqlite

我在 Android 中使用 sqLite 查询时遇到问题。

基本上我想要的是这样的:

SELECT * FROM table
WHERE column2 LIKE ?
OR column3 LIKE ?
AND column1 =?
GROUP BY column2
ORDER BY column2;

这是我的代码:

String query = "SELECT * FROM " +
    DBHelper.DB_SEARCH_TABLE + " WHERE " +
    DBHelper.DB_SEARCH_SEARCHVALUE + " LIKE ? OR " +
    DBHelper.DB_SEARCH_ARTIST + " LIKE ? AND " +
    DBHelper.DB_SEARCH_TYPE + " =? GROUP BY " +
    DBHelper.DB_SEARCH_SEARCHVALUE + " ORDER BY " +
    DBHelper.DB_SEARCH_SEARCHVALUE + ";";

cursor = mp3Database.rawQuery(query, new String[]{"%" + searchTerm + "%", "%" + searchTerm + "%", type});

查询类型有效。它不会给出任何错误...但它还包含不属于我正在查找的类型的行...(AND column1 =?)

LIKE 子句像这样工作得很好...问题只是类型。

建议?

==========================

这是一个合理的查询吗?

SELECT * FROM Search 
WHERE (SearchValue LIKE ? OR Artist LIKE ?) OR 
(Artist LIKE ? AND Artist LIKE ?) AND
Type =? 
GROUP BY SearchValue
ORDER BY Artist , SearchValue;
<小时/>
 String query = "SELECT * FROM " +
                DBHelper.DB_SEARCH_TABLE + " WHERE (" +
                DBHelper.DB_SEARCH_SEARCHVALUE + " LIKE ? OR " +
                DBHelper.DB_SEARCH_ARTIST + " LIKE ?) OR (" +
                DBHelper.DB_SEARCH_ARTIST + " LIKE ? AND " +
                DBHelper.DB_SEARCH_ARTIST + " LIKE ?) AND " +
                DBHelper.DB_SEARCH_TYPE + " =? GROUP BY " +
                DBHelper.DB_SEARCH_SEARCHVALUE + " ORDER BY " +
                DBHelper.DB_SEARCH_ARTIST + " , " +
                DBHelper.DB_SEARCH_SEARCHVALUE + ";";


        cursor = mp3Database.rawQuery(query, new String[]{"%" + searchTerm + "%", "%" + searchTerm + "%", "%" + searchTerm + "%", "%" + search
                + "%", type});

最佳答案

您可能想要对 where 子句进行分组:WHERE (DBHelper.DB_SEARCH_SEARCHVALUE LIKE ? OR DBHelper.DB_SEARCH_ARTIST LIKE ?) AND DBHelper.DB_SEARCH_TYPE = ?

String query = "SELECT * FROM " +
    DBHelper.DB_SEARCH_TABLE + " WHERE (" +
    DBHelper.DB_SEARCH_SEARCHVALUE + " LIKE ? OR " +
    DBHelper.DB_SEARCH_ARTIST + " LIKE ?) AND " +
    DBHelper.DB_SEARCH_TYPE + " =? GROUP BY " +
    DBHelper.DB_SEARCH_SEARCHVALUE + " ORDER BY " +
    DBHelper.DB_SEARCH_SEARCHVALUE + ";";

cursor = mp3Database.rawQuery(query, new String[]{"%" + searchTerm + "%", "%" + searchTerm + "%", type});

关于android - 复杂的 sqLite 查询 LIKE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33620517/

相关文章:

android - VideoView 正在停止音乐播放器

android - 使用 Parcelable 而不是序列化对象的好处

android - 创建一个拆分控件,就像浏览器地址栏中的控件一样

php表单mysql错误到数据库

java - 使用 javascript 内容调用 HTML 页面

php - SQL 左连接只返回一行而不是多行

php - Yii2中如何实现mysql记录锁定

mysql 正则表达式来匹配路径

python - Cassandra数据库,哪个python接口(interface)?

mysql - 如何在MySql数据库中选择几条记录进行编辑