SQlite支持in、like运算符,在Android中通过ContentResolver的query方法同样可以使用。只是需要注意以下几点:
1. like操作:注意事项:like前需要有空格
String title = "Faded";
where = MediaStore.Audio.Media.TITLE + " like?";
args = new String[]{"%" + title+ "%"};
2. in 操作:
如果,要把args和where参数分开写,就像下面这样:
如:ArrayList<> list;
where = MediaStore.Audio.Media.TITLE + " in(?)";
args = new String[]{TextUtils.join(",",list)};
如果这样写,只有在list中只有一个元素时,能查询到(即返回的cursor.getCount == 1);如果list中有多个元素,则返回的cursor.getCount == 0;
要想成功,要按照下面的写法:
where = MediaStore.Audio.Media.TITLE + " in("+TextUtils.join(",",list)+");
args = null;
根据要比较条件的列的值类型,上面红色字体部分需要按照如下规则编写,:
(1)如果要比较的列的值是Integer型,则直接按照红色字体部分写就可以;
举例:假设要查询的列是A,要查询的值的范围是1,2,3则 条件是Where A in(1,2,3)
(2)如果要比较的列的值是String型,则需要写成下面这个样子:
where = MediaStore.Audio.Media.TITLE + " in("+"\'"+TextUtils.join("\',\'",list)+"\'"+");
或 where = MediaStore.Audio.Media.TITLE + " in("+"\""+TextUtils.join("\",\"",list)+"\""+");
举例:假设要查询的列是B,要查询的范围是A、B、C,则条件应该是 where B in('A','B','C') 或 where B in("A","B","C");