Пожалуйста, подскажите, как используется REGEXP в SQLite?
Реализация:
SELECT field FROM table WHERE field REGEXP '123'
Он не работает. Error: no such function: REGEXP
Ответ 1
Вы не можете его использовать.
Сначала вам понадобится функция, которая ее реализует, согласно документации:
Оператор REGEXP является специальным синтаксисом для пользовательской функции regexp(). Пользовательская функция regexp() не определена по умолчанию, поэтому использование оператора REGEXP обычно приводит к сообщению об ошибке. Если во время выполнения добавлена SQL-функция с именем "regexp", то оператор "X REGEXP Y" будет реализован как вызов "regexp (Y, X)".
Невозможно установить пользовательские функции в Android SQLite.
Подумайте, можно ли вместо регулярного выражения написать GLOB или LIKE шаблон.
Ответ 2
В настоящее время я работаю над sqlite3 + php для своего веб-приложения в Ubuntu 12.04. Я также столкнулся с той же проблемой, после которой после исследования я обнаружил, что нам нужно установить один пакет pcre для sqlite3. Здесь мы расскажем, как
apt-get install sqlite3-pcre
Затем перейдите в командную строку sqlite3 sqlite3 test.db
запустите команду .load /usr/lib/sqlite3/pcre.so
test: SELECT url FROM table_name where url REGEXP '^google.*';
После этих трех шагов он работает отлично для меня.
Если вы ошибаетесь, пожалуйста, исправьте меня.
Я надеюсь, что это поможет вам.