¿Cómo uso expresiones regulares en una consulta SQLite?

Resuelto cody asked hace 13 años • 21 respuestas

Me gustaría utilizar una expresión regular en sqlite, pero no sé cómo.

Mi tabla tiene una columna con cadenas como esta: "3,12,13,14,19,28,32" Ahora, si escribo "donde x ME GUSTA '3'", también obtengo las filas que contienen valores como 13 o 32. , pero me gustaría obtener sólo las filas que tienen exactamente el valor 3 en esa cadena.

Alguien sabe cómo resolver esto?

cody avatar Feb 22 '11 04:02 cody
Aceptado

Como ya han señalado otros, REGEXP llama a una función definida por el usuario que primero debe definirse y cargarse en la base de datos. Quizás algunas distribuciones sqlite o herramientas GUI lo incluyan de forma predeterminada, pero mi instalación de Ubuntu no. La solución fue

sudo apt-get install sqlite3-pcre

que implementa expresiones regulares de Perl en un módulo cargable en/usr/lib/sqlite3/pcre.so

Para poder utilizarlo hay que cargarlo cada vez que abres la base de datos:

.load /usr/lib/sqlite3/pcre.so

O podrías poner esa línea en tu ~/.sqliterc.

Ahora puedes consultar así:

SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';

Si desea consultar directamente desde la línea de comandos, puede usar el -cmdmodificador para cargar la biblioteca antes de su SQL:

sqlite3 "$filename" -cmd ".load /usr/lib/sqlite3/pcre.so" "SELECT fld FROM tbl WHERE fld REGEXP '\b3\b';"

Si está en Windows, supongo que debería haber un archivo .dll similar disponible en alguna parte.

mivk avatar Dec 01 '2011 08:12 mivk

SQLite3 admite el operador REGEXP:

WHERE x REGEXP <regex>

http://www.sqlite.org/lang_expr.html#regexp

DanS avatar Feb 21 '2011 21:02 DanS