0

我需要比较此类代码中电话号码的最后 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

4

1 回答 1

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 个字符。

注意:对于 function substr(x,y,z)y是开始字符,如果 y 为负数,则从 . 的右侧开始计数xz是从 y 位置开始的字符数。

于 2012-09-08T01:30:15.510 回答