如何在android中使用正则表达式搜索sqlite数据库?
我试图在sqlite中使用正则表达式搜索数据库。 这是我的代码:
cursor = db.rawQuery("SELECT _id, employee FROM employees WHERE employee REGEXP ?", new String[]{"%" + prepareSearchText() + "%"}); adapter = new SimpleCursorAdapter( this, R.layout.search_row, cursor, new String[] {"_id", "employee "}, new int[] {R.id.idField, R.id.nameField}); setListAdapter(adapter);
但是我收到此错误:
Caused by: android.database.sqlite.SQLiteException: no such function: REGEXP.
之前我在MySQL中使用了函数REGEXP,所以我认为它存在于sqlite中,但显然它不是。
在android中查询sqlite数据库时执行正则表达式的最佳方法是什么?
在sqllite中,默认情况下不包含“REGEXP”function,您需要“自己滚动”。
但是,只要您的搜索相当简单,“LIKE”运算符就可以执行您想要的操作。
文档
正如James建议的那样,使用LIKE
运算符,然后使用正则表达式对结果进行java搜索
假设您希望从联系人表中获取以+或0-9范围开头的电话号码。
REGEXP '^[0-9].*|[+].*'
Sqlite3查询
select * from Contact where name REGEXP '^[0-9].*|[+].*'