Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

WHERE IS NULL, IS NOT NULL lub NO WHERE w zależności od wartości parametru SQL Server

Oto jak możesz rozwiązać ten problem za pomocą pojedynczego WHERE klauzula:

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

Naiwne użycie instrukcji CASE nie działa , mam na myśli następujące:

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

Można to rozwiązać za pomocą instrukcji case, zobacz odpowiedź onedaywhen



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zainstaluj SQL Server 2016

  2. Wstaw SQL Server, jeśli nie istnieje, najlepsze praktyki

  3. Jak sprawdzić, czy kolumna istnieje w tabeli SQL Server?

  4. Dodaj relację klucza obcego między dwiema bazami danych

  5. SqlConnection SqlCommand SqlDataReader IDisposable