Ответ 1
В sqllite функция REGEXP не включена по умолчанию, и вам необходимо "перевернуть ее".
Однако оператор "LIKE" должен делать то, что вы хотите, если ваши запросы достаточно просты.
Я пытаюсь найти базу данных, используя регулярное выражение в 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.
Я использовал функцию REGEXP в MySQL до того, как я предположил, что она существует в sqlite, но, по-видимому, это не так.
Каков наилучший способ выполнения регулярного выражения при запросе базы данных sqlite в android?
В sqllite функция REGEXP не включена по умолчанию, и вам необходимо "перевернуть ее".
Однако оператор "LIKE" должен делать то, что вы хотите, если ваши запросы достаточно просты.
Как предложил Джеймс, используйте оператор LIKE
, а затем выполните java-поиск результатов с использованием регулярных выражений
Предположим, вы хотите, чтобы номер телефона начинался с + или в диапазоне от 0 до 9 из таблицы контактов.
REGEXP '^[0-9].*|[+].*'
Запрос Sqlite3
select * from Contact where name REGEXP '^[0-9].*|[+].*'