Как сделать запрос с учетом регистра с помощью ContentResolver в Android?

Моя цель - получить все строки из native db с определенным адресом электронной почты на Android Gingerbread и выше.

Этот запрос получает только строки, в которых также соответствует случай.

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

Я читал о предложениях WHERE для sql, где один использует нижний ( "xx" ), но я не могу понять, как его использовать. Также я узнал, что вы можете сделать столбец не заботясь о случае при создании таблицы, но этот корабль отплыл.

Ответ 1

Попробуйте (я полагаю, что почта является объектом String):

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);

Ответ 2

Также попробуйте

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 в запрос.

Ответ 3

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);