Jak inni już zauważyli, REGEXP wywołuje funkcję zdefiniowaną przez użytkownika, którą należy najpierw zdefiniować i załadować do bazy danych. Może niektóre dystrybucje sqlite lub narzędzia GUI zawierają to domyślnie, ale moja instalacja Ubuntu nie. Rozwiązaniem było
sudo apt-get install sqlite3-pcre
który implementuje wyrażenia regularne Perla w ładowalnym module w /usr/lib/sqlite3/pcre.so
Aby móc z niego korzystać, musisz go ładować za każdym razem, gdy otwierasz bazę danych:
.load /usr/lib/sqlite3/pcre.so
Lub możesz umieścić tę linię w swoim ~/.sqliterc
.
Teraz możesz zapytać w ten sposób:
SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';
Jeśli chcesz wykonywać zapytania bezpośrednio z wiersza poleceń, możesz użyć -cmd
przełącznika, aby załadować bibliotekę przed SQL:
sqlite3 "$filename" -cmd ".load /usr/lib/sqlite3/pcre.so" "SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';"
Jeśli korzystasz z systemu Windows, myślę, że podobny plik .dll powinien być gdzieś dostępny.