Как уже указывали другие, REGEXP вызывает пользовательскую функцию, которая должна быть сначала определена и загружена в базу данных. Может быть, некоторые дистрибутивы sqlite или инструменты с графическим интерфейсом включают его по умолчанию, но моя установка Ubuntu этого не сделала. Решение было
sudo apt-get install sqlite3-pcre
, который реализует регулярные выражения Perl в загружаемом модуле в /usr/lib/sqlite3/pcre.so
Чтобы использовать его, вы должны загружать его каждый раз, когда открываете базу данных:
.load /usr/lib/sqlite3/pcre.so
Или вы можете поместить эту строку в ваш ~/.sqliterc
.
Теперь вы можете запросить так:
SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';
Если вы хотите выполнить запрос непосредственно из командной строки, вы можете использовать переключатель -cmd
для загрузки библиотеки перед вашим SQL:
sqlite3 "$filename" -cmd ".load /usr/lib/sqlite3/pcre.so" "SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';"
Если вы работаете в Windows, я думаю, что аналогичный файл .dll должен быть где-то доступен.