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

Überspringen der WHERE-Anweisung, wenn die Variable für diese Anweisung null ist

Verwenden Sie für diesen einfachen Fall in Ihrer Frage einfach

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

Wenn Ihre tatsächliche Situation komplexer ist, können Sie

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

Der Grund für die Notwendigkeit der recompile Ein Tipp ist, einen einzigen Plan für beide Fälle zu vermeiden und einen unnötigen Scan durchzuführen, falls Sie einen expliziten Wert angeben.

Diese und andere Alternativen wie das dynamische Generieren der Abfrage werden ausführlich im Artikel Dynamische Suche behandelt Bedingungen in T-SQL