Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

WHERE IS NULL-, IS NOT NULL- oder NO WHERE-Klausel, abhängig vom SQL Server-Parameterwert

So können Sie dies mit einem einzigen WHERE lösen Klausel:

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

Eine naive Verwendung der CASE-Anweisung funktioniert nicht , damit meine ich Folgendes:

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 ist möglich, dies mit einer case-Anweisung zu lösen, siehe die Antwort von onedaywhen