tags:

views:

3356

answers:

1

I tried this:

from Table where (:par1 is null or col1 = :par1)

but it happens that

from Table where :par1 is null

always returns all the rows of the table, even if the :par1 is not null.

while

 select * from table where col1 = 'asdf'

does not return any row.

I can't use native grammars because my application is supposed to run on different database engines

+1  A: 

The equivalent to the nvl command in HQL is the coalesce command. coalesce(a,b) will return a if a is not null, otherwise b.

So you would want something on the lines of:

from Table where col1 = coalesce(:par1, 'asdf')
Il-Bhima
What I wanted in fact was:from Table where col1 = coalesce(:par1, col1)and it worked! thanks a lot!