Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Saltare l'istruzione WHERE se la variabile per tale istruzione è nulla

Per questo semplice caso nella tua domanda usa semplicemente

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

Se la tua situazione attuale è più complessa potresti usare

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

Il motivo per cui è necessario recompile il suggerimento è evitare di avere un unico piano che soddisfi entrambi i casi e di eseguire una scansione non necessaria nel caso in cui si fornisca un valore esplicito.

Queste e altre alternative, come la generazione dinamica della query, sono discusse in dettaglio nell'articolo Ricerca dinamica Condizioni in T-SQL