如何在Android中使用ContentResolver进行不区分大小写的查询?

我的目标是从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’),但我无法弄清楚如何使用它。 另外,我了解到你可以在创建表时使列不关心案例,但是那艘船已经航行了。

  • 与Android数据库使用swagger
  • Android,Diacritic不敏感的SQLitesearch
  • rawQuery与 database.query
  • 将SQLite数据库导出到android中的csv文件
  • Android设备监视器“数据”文件夹为空
  • 一个用于deviseAndroid的SQLite数据库的开发工具
  • Android的Sqlite - “没有这样的表”的错误
  • Android上SQLite数据库的最大大小是多少?
  • 请尝试(我想邮件是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); 

    也试试

     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

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