Android SQLite中的REGEXP

时间:2015-12-14 23:26:37

标签: android regex sqlite

我正在尝试使用REGEXP在联系人数据库中使用android SQLite。我想要做的是为联系人显示名称进行全字匹配,以寻找诸如“叔叔”或“阿姨”之类的单词,即使显示名称可能是“叔叔山姆”或“阿姨朱莉”。但是每当我尝试使用REGEXP时,我都会收到错误

android.database.sqlite.SQLiteException: ICU error: uregex_open(): U_ILLEGAL_ARGUMENT_ERROR (code 1)

这是我在查询中尝试做的简化版本:

whereBuffer.append(ContactsContract.Contacts.DISPLAY_NAME).append(" REGEXP ").append("'[[:<:]]uncle[[:>:]]'");

1 个答案:

答案 0 :(得分:1)

SQLite documentation解释了REGEXP运算符是regexp()用户函数的特殊语法。在Android中,没有定义regexp()用户函数。

对于您要执行的匹配,LIKE运算符应该足够了:

(ContactsContract.Contacts.DISPLAY_NAME).append(" LIKE ").append("'%uncle%'");

如果您需要更多一般模式匹配,请考虑使用GLOB运算符。 GLOB运算符与LIKE类似,但对其通配符使用Unix文件通配语法。此外,与GLOB不同,LIKE区分大小写。