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文字を取得するために使用できます。

注:関数の場合substr(x,y,z)yは開始文字です。yが負の場合、。の右から数えますx。yのz位置から始まる文字数です。

于 2012-09-08T01:30:15.510 に答える