in reply to parse a query string

Can I ask, "Why do you want this?" If you execute the query in DBI, you can get the column aliases with $sth->{NAME_lc}. Will you not be executing the query? Maybe SQL-Statement will parse it, but I'm not sure if it does aliases, and I'm pretty sure it doesn't do database specific things like "case" statements (though you could maybe subclass SQL::Parser to handle that).