Как использовать regexp в sqlite

Пожалуйста, подскажите, как используется 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.*';

После этих трех шагов он работает отлично для меня. Если вы ошибаетесь, пожалуйста, исправьте меня. Я надеюсь, что это поможет вам.

Спасибо