Как уже указывали другие, 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.