sql >> Databáze >  >> RDS >> Sqlserver

Přeskočení příkazu WHERE, pokud je proměnná tohoto příkazu null

Pro tento jednoduchý případ ve vaší otázce stačí použít

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

Pokud je vaše skutečná situace složitější, můžete použít

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

Důvod, proč je potřeba recompile radou je vyhnout se tomu, abyste měli pro oba případy jeden plán a neprováděli zbytečné skenování v případě, že zadáte explicitní hodnotu.

Tyto a další alternativy, jako je dynamické generování dotazu, jsou podrobně popsány v článku Dynamické vyhledávání Podmínky v T-SQL



  1. Vyberte body z mapové databáze podle poloměru

  2. Dělám skript typu online kvíz v PHP. Je lepší používat soubory cookie nebo relace

  3. Hibernate, Postgres &Array Type

  4. Jak vyjádřit svou hodnotu jako DBA finančním manažerům