select count(*)
from ...
where ...
and col1 between :low1 and :high2
and col2 between :low2 and :high2
...

wenn in :lowx, :highx lowval bzw highval ist die Bedingung immer true
schreibe ich einen Wert in beide rein, nimmt er nur diesen

et voila!

mit dem null habe ich Bedenken, das sieht mir nach einer Fehlerbedingung aus (Vergleiche mit einem Nuulwert gehen nur mit is null, bzw. is not null

D*B