Come altri hanno già sottolineato, REGEXP chiama una funzione definita dall'utente che deve essere prima definita e caricata nel database. Forse alcune distribuzioni sqlite o strumenti GUI lo includono per impostazione predefinita, ma la mia installazione di Ubuntu no. La soluzione era
sudo apt-get install sqlite3-pcre
che implementa le espressioni regolari Perl in un modulo caricabile in /usr/lib/sqlite3/pcre.so
Per poterlo utilizzare, devi caricarlo ogni volta che apri il database:
.load /usr/lib/sqlite3/pcre.so
Oppure potresti mettere quella linea nel tuo file ~/.sqliterc
.
Ora puoi eseguire query in questo modo:
SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';
Se desideri eseguire una query direttamente dalla riga di comando, puoi utilizzare il file -cmd
opzione per caricare la libreria prima del tuo SQL:
sqlite3 "$filename" -cmd ".load /usr/lib/sqlite3/pcre.so" "SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';"
Se sei su Windows, immagino che un file .dll simile dovrebbe essere disponibile da qualche parte.