Expresiones regulares en consultas sql

372 views
Skip to first unread message

cabildocl

unread,
Jan 28, 2011, 4:43:44 PM1/28/11
to web2py-usuarios
No puedo consultar de una base de datos, todos los registros que
comiencen con la expresión regular 9[2-9], osea que comiencen con 92,
93 .... 99, conocen ustedes una alternativa??


Saludos

Marcelo Zabaljauregui

unread,
Jan 28, 2011, 4:53:09 PM1/28/11
to web2py-...@googlegroups.com
Depende del motor por ejemplo oracle puede usar expresiones regulares:


SELECT VVALOR
FROM   TABLA
WHERE  REGEXP_LIKE( VVALOR, '[^0-9]')


--
____________________
Marcelo Zabaljauregui

cabildocl

unread,
Jan 29, 2011, 7:26:11 PM1/29/11
to web2py-usuarios
Gracias, ya pude realizar la consulta con el siguiente codigo:

prueba = "SELECT * FROM cdr WHERE src = " + session.extension + " and
dst REGEXP '^909'" + " and calldate > " + "'" + session.fecha_inicio +
"'" + " and calldate < " + "'" + session.fecha_termino + "'" + ";"
resultados = db.executesql(prueba, as_dict=True)

Pero tengo un problema el formato de salida no es el normal de las
consultas en web2py, o sea no puede imprimir con resultado.src como
ejemplo, como imprimo esta salida??'

On 28 ene, 18:53, Marcelo Zabaljauregui <mzabaljaure...@gmail.com>
wrote:
> Depende del motor por ejemplo oracle puede usar expresiones regulares:
>
> SELECT VVALORFROM   TABLAWHERE  REGEXP_LIKE( VVALOR, '[^0-9]')

cabildocl

unread,
Feb 19, 2011, 5:29:42 AM2/19/11
to web2py-usuarios
Ya resolví el problema con lo siguiente:

#Preparo la expresion regular
r=re.compile(r'^9[2-9]')
#hago la consulta a la tabla
rows=db().select(db.table.ALL)
#filtro la respuesta con la expresion regular
row=[x for i,x in enumerate(row) if r.match(row[i].field)]

Saludos
Reply all
Reply to author
Forward
0 new messages