sql >> Databasteknik >  >> RDS >> Sqlserver

WHERE IS NULL, IS NOT NULL eller NO WHERE-satsen beroende på SQL Server-parametervärdet

Så här kan du lösa detta med en enda WHERE klausul:

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

En naiv användning av CASE-satsen fungerar inte , med detta menar jag följande:

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

Det går att lösa detta med hjälp av ett fall, se onedaywhens svar



  1. Hur man undslipper sträng medan man matchar mönster i PostgreSQL

  2. Vad är skillnaden mellan AS och IS i en Oracle-lagrad procedur?

  3. Släpp Unik begränsning från MySQL-tabellen

  4. INFOGA med BESTÄLLNING på Oracle