Buenas, a ver si me entero de cómo hacer cosas con expresiones
regulares,
porque no me aclaro. Llevo un par de horas con el método prueba-error
para
sacar algo y no hay manera.
El es que lo que quiero es sacar de una sentencia sql, las columnas a
las
que se hace consulta.
Y estos son los 3 posibles casos:
select a.login, a.nombre from usuarios
select a.login as acceso, a.nombre as el_nombre from usuarios
select a.login acceso, a.nombre el_nombre from usuarios
Sé que hacerlo es algo tan fácil como crear una expresión regular que
haga
lo siguiente:
-corte lo que hay entre el select y el from,
-del resultado sacar lo que está separado por las comas,
-y de cada uno de los elementos resultantes, sacar lo que hay más a la
derecha, separado por espacio o punto…
Yo lo he hecho a lo bruto, pero me molesta tener que codificar tanto
pudiendo hacerlo mucho más fácil.
Me queda asÃ:
query = "select a.login acceso, a.nombre as el_nombre, a.password
from
usuarios"
aux = query.downcase.split(/from/)[0]
array_aux = aux.gsub(/select/,"").split(",")
retorno = []
array_aux.each do |cadena|
aux = cadena.strip
for aux2 in aux.split(" “)
aux2
end
aux2 = aux2.split(”.")[1] if aux2=~/./
retorno << aux2
end
retorno