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");



         

         

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值