我有一些代码片段,可在其中按字符串"niv"搜索联系人:

idCursor = mApp.getContentResolver().query(
        ContactsContract.Data.CONTENT_URI,
        new String[] { ContactsContract.Data.CONTACT_ID },
        "( display_name LIKE ? ) OR ( data1 LIKE ? )",
        new String[] {"niv%", "niv%"},
        ContactsContract.Data.CONTACT_ID + " ASC");


因此,此查询查找电子邮件(data1)或display_nameniv开头的联系人。它应该捕获display_nameNiv The Great的情况

但是,如果display_nameGreat Niv,会发生什么。第二个词从niv开始

如何明智地编写查询以不影响搜索性能而是采取第二种情况?

预期行为


Niv The Great:匹配项
Great Niv:匹配项
Kaniv The Great:不匹配
Great Roniv:不匹配

最佳答案

在参数值之前和之后添加通配符%,如下所示:( display_name LIKE '%' || ? || '%')
这样,它将在任何出现char序列的位置进行搜索

关于java - Android sqlite:如何按第二个字词进行搜索?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28740647/

10-12 05:09