如何在Android查询中使用子字符串



我需要比较以下代码中电话号码的最后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) = ?";

但我不确定在查询ContentProviders时是否可以使用这样的SQLLite查询。

试试这个解决方案,我已经自己测试过了,应该可以使用了。

//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的右边开始计数。CCD_ 8是从y位置开始的字符数。

最新更新