11

我的目标是在 Android Gingerbread 及更高版本上使用特定电子邮件地址从本机数据库中获取所有行。

此查询仅获取大小写也匹配的行。

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 回答