[Zope] sqltest conditions
Hugh Emberson
hugh@tig.com.au
16 Sep 1999 22:22:04 +1000
I just spent the day playing with my shiny new Zope installation and SQL
methods, and I have been wondering if there is any reason why you can't
specify a comparison operator in a sqltest directive. What I really wanted
was something like:
<!--#sqltest colname op=like type=string optional-->
which would produce SQL like:
colname like 'value'
I know that I can use a construct like this:
<!--#if colname-->
colname like <!--#sqlvar colname-->
<!--#/if-->
But it is quite clumsy.
If no one can come up with a reason then I might take a stab at adding an
optional attribute to sqltest, something like this:
Option SQL
------- -------
op=eq C = V or C in (V) if V is a list
op=like C like V
op=lt C < V
op=le C <= V
op=gt C > V
op=ge C >= V
op=ne C <= V
where C is the column name and V is the value of the variable. Does the order
of the comparisons make sense? Should it be "C op V" or "V op C" ?
Obviously, only "op=eq" will work with lists, though I guess I could generate
something like:
( C like V[0] or C like V[1] or ... )
for "op=like" with a list though I'm not sure of the utility.
I had a quick look at the source, in sqltest.py, and I don't think it will be
hard to add this. Can anyone come up with a reason why this doesn't make
sense?
Hugh