Как сделать запрос с учетом регистра с помощью 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);