Как искать базу данных sqlite, используя регулярное выражение в android?

Я пытаюсь найти базу данных, используя регулярное выражение в 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?

Ответ 1

В sqllite функция REGEXP не включена по умолчанию, и вам необходимо "перевернуть ее".

Однако оператор "LIKE" должен делать то, что вы хотите, если ваши запросы достаточно просты.

документы

Ответ 2

Как предложил Джеймс, используйте оператор LIKE, а затем выполните java-поиск результатов с использованием регулярных выражений

Ответ 3

Предположим, вы хотите, чтобы номер телефона начинался с + или в диапазоне от 0 до 9 из таблицы контактов.

REGEXP '^[0-9].*|[+].*'

Запрос Sqlite3

select * from Contact  where name REGEXP '^[0-9].*|[+].*'