11

私の目標は、AndroidGingerbread以降で特定のメールアドレスを持つネイティブデータベースからすべての行を取得することです。

このクエリは、大文字と小文字も一致する行のみを取得します。

Cursor cursor = context.getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
            new String[] {Contacts._ID}, ContactsContract.CommonDataKinds.Email.ADDRESS + "=?",
            new String[] {email}, null);

sqlのWHERE句について読んだことがありますが、lower('xx')を使用していますが、その使用方法がわかりません。また、テーブルを作成するときに列を大文字と小文字を区別しないようにすることができることも学びましたが、その船は出航しました。

4

3 に答える 3

21

また、試してみてください

Cursor cursor = context.getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
            new String[] {Contacts._ID}, ContactsContract.CommonDataKinds.Email.ADDRESS + "=? COLLATE NOCASE",
            new String[] {email}, null);

COLLATE NOCASEクエリに追加されていることに注意してください。

于 2012-09-24T14:00:37.420 に答える
8

試してください(メールは文字列オブジェクトだと思います):

Cursor cursor = context.getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
        new String[] {Contacts._ID}, "lower("+ContactsContract.CommonDataKinds.Email.ADDRESS + ")=lower('"+ email +"')",
        null, null);

また

Cursor cursor = context.getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,
        new String[] {Contacts._ID}, "lower("+ContactsContract.CommonDataKinds.Email.ADDRESS + ")=lower('"+ email +"')",
        new String[] {}, null);
于 2012-09-24T13:56:55.567 に答える
0
Cursor cursor = this.db.query("UserTbl", new String[] {"UserId",
                        "Username", "Password" },
                        "Username = ? COLLATE NOCASE AND Password = ? COLLATE NOCASE", new String[] { userNameString,
                                passwordString }, null, null, null);
于 2014-01-07T06:35:10.877 に答える