Having your clients write regular expressions...

Check out ez_where,

It might help with you range problem

or you could do

/(1[5-9]|[2-8]\d|90)/ which might not be the best way of matching that but i
believe it'll work

Let them provide the SQL where clauses?

It could be a Very Bad Idea, but either way the plugin's really nifty.