Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

WHERE IS NULL, IS NOT NULL ou NO WHERE selon la valeur du paramètre SQL Server

Voici comment vous pouvez résoudre ce problème en utilisant un seul WHERE clause :

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

Une utilisation naïve de l'instruction CASE ne fonctionne pas , j'entends par là ce qui suit :

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

Il est possible de résoudre ce problème en utilisant une déclaration de cas, voir la réponse d'un jour quand