我想创建这样的查询:
SELECT * FROM my_table WHERE column_1 in (1, 2, 3);
此查询在 SQLite 编辑器中有效,但我想在 Java 中使用它。 我尝试像这样使用它:
String query = "SELECT * FROM mu_table WHERE coumn_1 in ?";
String[] args = {"(1, 2, 3)"};
Cursor c = db.rawQuery(query, args);
但这行不通。出现以下错误:
near "?": syntax error (code 1): , while compiling: SELECT * FROM my_table WHERE column_1 in ?
为什么这是不正确的,正确的方法是什么?
最佳答案
String query = "SELECT * FROM mu_table WHERE coumn_1 in (?, ?, ?)";
String[] args = new String[]{String.valueOf(1), String.valueOf(2), String.valueOf(3)};
Cursor c = db.rawQuery(query, args);
由于需要强制将选择参数作为字符串传递,因此我们可以将其作为
String[]{String.valueOf(1), String.valueOf(2), String.valueOf(3)}
或作为
String[]{"1", "2", "3"}
但它只会作为数字进行比较,而不是字符串。 为了使其作为字符串进行比较,我们必须传递为
String[]{'1','2','3'}
但在当前问题上下文中不需要。
关于Java - SQLite - 如何在 where 子句中使用一列的一组值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27657441/