ContentResolver query 特殊条件查询: in,like
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");
更多相关文章
- 分支和循环(二)(零基础学习C语言)
- android 使用Freetype 提取字模,并可转化bmp图
- android中创建有自身特色的字符串
- Android:Xmpp协议的简单分析
- android 设置状态栏颜色和字体颜色
- android中TextView分段显示不同颜色,字体,时间
- Android(安卓)8.1 来电默认全屏显示 如何修改
- Android通用布局对象
- Android(安卓)界面布局