Zdá se, že si tím ztěžujete život. Nechte je null, pak proveďte:
where (param1 is null or t.col1 like param1)
and (param2 is null or t.col2 like param2)
Pokud param1
(argument procedury; život je jednodušší, když se vaše názvy parametrů/proměnných a názvy sloupců liší... takže jsem názvy sloupců změnil, aby to bylo trochu jasnější) je null, v podstatě se ignoruje* a všechny řádky tuto část předají filtru, zda je hodnota sloupce null nebo ne null. Pokud param2
není null, pak is null
kontrola selže a pouze řádky s hodnotami sloupce (není null), které odpovídají param2
hodnotu splňující tuto část filtru.
* Podmínky v or
lze hodnotit v libovolném pořadí; zadáním is null
check first nemusí nutně znamenat like
nebudou hodnoceny – ale optimalizátor je na takové věci docela chytrý