sql >> Base de Datos >  >> RDS >> Sqlserver

Saltarse la declaración WHERE si la variable para esa declaración es nula

Para este caso simple en su pregunta solo use

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

Si su situación real es más compleja, podría usar

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

El motivo por el que se necesita recompile La sugerencia es evitar tener un solo plan para ambos casos y realizar un escaneo innecesario en caso de que proporcione un valor explícito.

Estas y otras alternativas, como generar la consulta dinámicamente, se analizan en detalle en el artículo Búsqueda dinámica Condiciones en T-SQL