我需要在这样的代码中比较电话号码的最后10位数字:
String selectionClause = ContactsContract.CommonDataKinds.Phone.NUMBER+ " = ?";
String[] selectionClauseArgs = { callerId };
Cursor people = resolver.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projections,
selectionClause, selectionClauseArgs, null);
所以selectionClause
应该像
String selectionClauseArgs = "substr("+CommonDataKinds.Phone.NUMBER+",-1,10) = ?";
但我不确定在查询SQLLite
时是否可以使用此类ContentProviders
查询。
答案 0 :(得分:0)
尝试这个解决方案,我自己测试过,应该可以工作。
//substr(string,-10, 10) take last 10 characters.
String selectionClause = "substr(" + ContactsContract.CommonDataKinds.Phone.NUMBER + ",-10, 10) =?";
String[] selectionClauseArgs = { callerId };
Cursor people = resolver.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projections,
selectionClause, selectionClauseArgs, null);
您也可以使用substr(COLUMN_NAME,-10)
获取最后10个字符。
注意:对于函数substr(x,y,z)
,y
是起始字符,如果y为负数,则它从x
的右侧开始计数。 z
是从y位置开始的字符数。