Comme d'autres l'ont déjà mentionné, 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 sqlite ou des outils GUI l'incluent par défaut, mais mon installation Ubuntu ne l'avait pas. 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 pourriez mettre cette ligne dans votre ~/.sqliterc
.
Maintenant vous pouvez faire une requête comme ceci:
SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';
Si vous souhaitez faire une requête directement à partir de la ligne de commande, vous pouvez utiliser l'option -cmd
pour charger la bibliothèque avant votre requête SQL:
sqlite3 "$filename" -cmd ".load /usr/lib/sqlite3/pcre.so" "SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';"
Si vous êtes sur Windows, je suppose qu'un fichier .dll similaire devrait être disponible quelque part.
3 votes
Cette réponse est la meilleure pour ajouter la fonction REGEXP à sqlite en c# stackoverflow.com/a/26155359/5734452