Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Clausola WHERE IS NULL, IS NOT NULL o NO WHERE a seconda del valore del parametro SQL Server

Ecco come puoi risolverlo usando un singolo WHERE clausola:

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

Un uso ingenuo dell'istruzione CASE non funziona , con questo intendo quanto segue:

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

È possibile risolvere questo problema utilizzando un'istruzione case, vedere la risposta di onedaywhen