是否可以对ContactsContract进行一次查询,以获得一组与显示名称或电话号码或电子邮件地址匹配的联系人?
这实际上是联系人和数据“表”的连接(在引号中,因为它们看起来只是通过界面的表,但可能不是)。
换句话说,我想要一个where子句(简化语法)
parseInt(document.getelementById(idString).value)
并且表格像
一样加入where Contacts.DISPLAY_NAME like "%?%"
or (Data.MIMETYPE = Phone.CONTENT_ITEMTYPE
and CommonDataKinds.Phone.NUMBER like "%?%")
or (Data.MIMETYPE = Email.CONTENT_ITEMTYPE
and CommonDAtaKinds.Email.ADDRESS like "%?%")
我可以将此作为单独的查询而不使用连接,但是然后对结果进行排序变得困难。我希望他们按展示名称排序。
答案 0 :(得分:1)
如果您只想匹配姓名/电子邮件/电话,则可以执行以下操作:
WHERE Data.MIMETYPE IN (StructuredName.CONTENT_ITEM_TYPE, Phone.CONTENT_ITEM_TYPE, Email.CONTENT_ITEM_TYPE)
AND Data.DATA1 LIKE "%?%"
如果您可以扩展可能的匹配字段,那么您可以将查询简化为:
WHERE Data.DATA1 LIKE "%?%"
这将匹配CommonDataKinds.StructuredName.DISPLAY_NAME
,CommonDataKinds.Email.ADDRESS
,CommonDataKinds.Phone.NUMBER
等。
答案 1 :(得分:0)
答案让我满脸通红。 数据表已经是一个连接(或看起来像一个,也许它是内部的非规范化表)。因此,我需要做的就是直接查询所有三个匹配项:
where Data.DISPLAY_NAME like "%?%"
or (Data.MIMETYPE = Phone.CONTENT_ITEMTYPE
and CommonDataKinds.Phone.NUMBER like "%?%")
or (Data.MIMETYPE = Email.CONTENT_ITEMTYPE
and CommonDAtaKinds.Email.ADDRESS like "%?%")
请注意上面的数据 .DISPLAY_NAME。