Aqui está como você pode resolver isso usando um único
WHERE
cláusula:WHERE (@myParm = value1 AND MyColumn IS NULL)
OR (@myParm = value2 AND MyColumn IS NOT NULL)
OR (@myParm = value3)
Um uso ingênuo da instrução CASE não funciona , com isso quero dizer o seguinte:
SELECT Field1, Field2 FROM MyTable
WHERE CASE @myParam
WHEN value1 THEN MyColumn IS NULL
WHEN value2 THEN MyColumn IS NOT NULL
WHEN value3 THEN TRUE
END
É possível resolver isso usando uma instrução case, veja a resposta de onedaywhen