我有两列FOO_COLUMN
和BAR_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
答案 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);