Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Cláusula WHERE IS NULL, IS NOT NULL ou NO WHERE dependendo do valor do parâmetro do SQL Server


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