在一个列中查询多个值的Sqlite查询

9 浏览
0 Comments

在一个列中查询多个值的Sqlite查询

我想在表格中查询id字段,值可以是1、5、4、11,这些值将根据之前的屏幕选择传递过来。

cursor = database.query(tablename,
                    new String[] { "TopName" }, "id =?", new String[]{"2,3"}, null, null, null);

当我这样做时,我得到的cursor计数为0,如果我使用new String[]{"2"},我可以得到想要的值,该值与字符串数组中的所有id匹配,如OR,并且该列中有值。

0
0 Comments

问题出现的原因是当我们想要在一个列中匹配多个值时,使用IN运算符无法满足需求。解决方法如下:

cursor = database.query(tablename, new String[] {"TopName"}, "id IN(?,?) AND column_name=?", 
                                        new String[]{"2","3", "value"}, null, null, null);

0
0 Comments

问题:在SQLite中如何查询某一列中多个值的数据?

原因:在某些情况下,我们需要查询某一列中包含多个特定值的数据。然而,通常情况下,SQLite查询中的IN操作符只能接受一个值,而不能直接接受多个值。因此,我们需要找到一种解决方法。

解决方法:通过使用占位符和字符串拼接的方式,可以实现在SQLite查询中查询多个值。以下是一个示例代码:

cursor = database.query(tablename, new String[] { "TopName" }, "id IN (?)", new String[]{"2,3"}, null, null, null);

在上面的代码中,我们使用了一个占位符"?"来代替多个值,然后通过使用字符串数组的方式传递多个值。在这个例子中,我们查询了id列中包含值为2和3的数据。

这样,就能够实现在SQLite查询中查询多个值的要求了。

0
0 Comments

问题原因:在使用Android的ContentProvider中的IN操作符时,如果不正确使用引号将每个逗号分隔的值括起来,整个字符串将被视为列的一个值。

解决方法:在使用IN操作符时,在参数中的每个逗号分隔的值周围添加单引号。这样可以确保每个值被视为列的一个值。

代码示例:

cursor = database.query(contentUri, projection, "columnName IN(?,?)", new String[]{"value1" , "value2"}, sortOrder);

或者可以使用以下代码:

cursor = database.query(contentUri, projection, "columnName IN(?)", new String[] {" 'value1' , 'value2' "}, sortOrder);

需要注意的是,在第二种情况下,需要在参数中的每个逗号分隔的值周围添加单引号,否则整个字符串将被视为列的一个值。SQL将会将其视为:

SELECT * FROM table WHERE columnName IN ('value1,value2')

而不是正确的语法:

SELECT * FROM table WHERE columnName IN ('value1' , 'value2')

通过正确使用引号,可以解决在一个列中使用多个值的问题。

0