Comme d'autres l'ont déjà souligné, REGEXP appelle une fonction définie par l'utilisateur qui doit d'abord être définie et chargée dans la base de données. Peut-être que certaines distributions de sqlite ou outils d'interface graphique l'incluent par défaut, mais pas mon installation Ubuntu. La solution était
sudo apt-get install sqlite3-pcre
qui implémente des expressions régulières Perl dans un module chargeable dans /usr/lib/sqlite3/pcre.so
Pour pouvoir l'utiliser, vous devez le charger à chaque fois que vous ouvrez la base de données:
.load /usr/lib/sqlite3/pcre.so
Ou vous pouvez mettre cette ligne dans votre ~/.sqliterc
.
Vous pouvez maintenant interroger comme ceci:
SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';
Si vous souhaitez interroger directement à partir de la ligne de commande, vous pouvez utiliser le -cmd
commutateur pour charger la bibliothèque avant votre SQL:
sqlite3 "$filename" -cmd ".load /usr/lib/sqlite3/pcre.so" "SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';"
Si vous êtes sous Windows, je suppose qu'un fichier .dll similaire devrait être disponible quelque part.