Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Ignorer l'instruction WHERE si la variable de cette instruction est nulle

Pour ce cas simple dans votre question, utilisez simplement

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

Si votre situation réelle est plus complexe, vous pouvez utiliser

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

La raison du besoin de la recompile conseil est d'éviter d'avoir un plan unique pour les deux cas et de faire une analyse inutile dans le cas où vous fournissez une valeur explicite.

Celles-ci, ainsi que d'autres alternatives telles que la génération dynamique de la requête, sont décrites en détail dans l'article Recherche dynamique Conditions en T-SQL