sql >> Base de Datos >  >> RDS >> Sqlserver

Cláusula WHERE IS NULL, IS NOT NULL o NO WHERE según el valor del parámetro de SQL Server

Así es como puede resolver esto usando un solo WHERE cláusula:

WHERE (@myParm = value1 AND MyColumn IS NULL)
OR  (@myParm = value2 AND MyColumn IS NOT NULL)
OR  (@myParm = value3)

Un uso ingenuo de la instrucción CASE no funciona , con esto me refiero a lo siguiente:

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

Es posible resolver esto usando una declaración de caso, vea la respuesta de onedaywhen