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

Pomijanie instrukcji WHERE, jeśli zmienna dla tej instrukcji ma wartość null

W tym prostym przypadku w Twoim pytaniu po prostu użyj

IF ( @place IS NULL )
  SELECT *
  FROM   table1
ELSE
  SELECT *
  FROM   table1
  WHERE  country = @place  

Jeśli Twoja rzeczywista sytuacja jest bardziej złożona, możesz użyć

select * 
from Table1 
where @place is null or [email protected] 
option (recompile)

Powód konieczności recompile wskazówką jest unikanie posiadania jednego planu cateringowego dla obu przypadków i niepotrzebnego skanowania w przypadku podania wyraźnej wartości.

Te i inne alternatywy, takie jak dynamiczne generowanie zapytania, zostały szczegółowo omówione w artykule Wyszukiwanie dynamiczne Warunki w T-SQL



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:Nieprawidłowa nazwa kolumny

  2. Jak zautomatyzować zadanie generowania skryptów w programie SQL Server Management Studio 2008?

  3. Jak wstawić podział wiersza w ciągu VARCHAR/NVARCHAR programu SQL Server?

  4. Oblicz dni obecne i nieobecne w tabeli

  5. Czy mogę użyć instrukcji CASE w warunku JOIN?