sqlite3 numeric fields

#SQLITE filtrar campos con valores numéricos


En el centro en el que trabajo llevamos varios años usando G Suite para la gestión de nuestras cuentas corporativas (y, a pesar de la polémica y las suspicacias que existen al respecto, estamos francamente contentos con los servicios que nos ofrece 😅)

La cuestión es que las cuentas tanto de profesores como alumnos siguen un patrón (bastante habitual de ver) que consiste en usar las primeras letras de nombres y apellidos incluyendo al final una serie de dígitos.

En una de las herramientas que tengo desarrolladas, necesitaba distinguir este tipo de cuentas de otras como las pertenecientes a planes y programas o a los departamentos en si y la forma más sencilla que tenía era seleccionar sólo aquellos registros sin números (para quedarme con las cuentas que no pertenecen a “individuos” sino a entidades como las de los planes que he mencionado 😉 )

En esta herramienta (un script en Python con Flask) utilizo SQLite como base de datos y, aunque existe la posibilidad de usar el operador REGEXP en sqlite3 he optado finalmente por el uso del operador GLOB que no deja de ser como el comando LIKE pero permitiendo comparar cadenas contra determinados patrones.

En concreto, la SQL que me permite buscar todos los emails que no contengan números es

select * from usuarios_gsuite where not email GLOB '*[0-9]*';

Siendo la sintaxis de GLOB realmente sencilla:

  • Usa * o ? (como se hace desde los tiempos de MS-DOS o actualmente en la terminal de Linux) para indicar múltiples (*) o un simple (?) carácter
  • [xyz] busca cualquiera de los caracteres
  • [^abc] indica que no sea ninguno de los caracteres especificados
  • [0-9] indica rango de valores como podría ser igualmente [a-zA-Z] para cualquier letra (que no dígito) tanto en mayúsculas como en minúsculas

Podrás encontrar fácilmente ayuda y ejemplos de GLOB tanto en Internet como en el enlace que te he dejado un poco más arriba y, si tienes dudas, pregunta en los comentarios que será interesante poder echar una mano y de paso aprender todos un poco más al respecto 👍

Conclusión

Pequeño artículo donde dejar constancia del uso y sintaxis del operador GLOB que te ayudará a realizar fácilmente consultas en bases de datos SQLite sin tener que recurrir a las expresiones regulares (cuando no queda más remedio no queda pero, para consultas sencillas, te puede sacar de más de un aprieto) que espero te sea de utilidad (y a mí de recordatorio 😉 )

Y tú…

  • ¿Has usado antes el operador GLOB?
  • ¿Qué tal te llevas con las expresiones regulares?
  • ¿Conoces otros gestores de bases de datos en los que pueda usarse?
  • ¿Consideras SQLite una base de datos “de juguete” o la usas aunque sea ocasionalmente?

 

2 comentarios en “#SQLITE filtrar campos con valores numéricos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .