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ý