执行此SQL查询的正确方法是什么?

时间:2014-08-17 11:51:38

标签: java android sql cursor

我有两列FOO_COLUMNBAR_COLUMN。我想从我的数据库中返回与foo匹配或至少包含foo且与bar匹配的所有结果。我可以在没有LIKE ?的情况下运行查询,它会返回正确的结果,我的问题是我只是不理解用于返回与SQL类似的结果的foo语句。

    String selection = FOO_COLUMN + "=? COLLATE NOCASE"
            + " LIKE '?'"
            + " AND " + BAR_COLUMN + "=?";
    String[] selectionArgs = new String[] {
            foo + "%", bar
    };
    Cursor c = getContentResolver().query(...selection, selectionArgs...);

换句话说:

我想搜索 并让查询从数据库返回 The Whatever ,只要该记录也与bar匹配即可。例如,foo = bar = 水果 ---> Apple The Orange

1 个答案:

答案 0 :(得分:0)

你可以使用union语句。首先找到与arg [0]匹配的行,然后找到与arg [1]类似的行。然后你将从这两个陈述中取出联合并得到你的结果。

它会是这样的:

SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
String[] subQueries = new String[] {
        "SELECT name_col FROM table1 WHERE " + BAR_COLUMN + "='bar'",
        "SELECT name_col FROM table1 WHERE " + FOO_COLUMN + " LIKE 'foor''"
};
String query = queryBuilder.buildUnionQuery(subQueries, null ,null);
Cursor results = mDatabase.rawQuery(query, null);