Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Пропускане на оператор WHERE, ако променливата за този оператор е нула

За този прост случай във вашия въпрос просто използвайте

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

Ако действителната ви ситуация е по-сложна, можете да използвате

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

Причината за необходимостта от recompile Съветът е да избягвате да имате един план, който да обслужва и двата случая и да правите ненужно сканиране в случай, че предоставите изрична стойност.

Тези и други алтернативи като динамично генериране на заявката са обсъдени подробно в статията Динамично търсене Условия в T-SQL



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Заявка за получаване на имената на всички таблици в базата данни на SQL Server 2008

  2. Как динамично да напишете име на атрибут в заявката за избор

  3. Как мога да прегледам всички файлове в папка с помощта на TSQL?

  4. Многочастният идентификатор TextBox1.Text не може да бъде обвързан в C# ASP.NET?

  5. Кръстосана заявка с динамични колони в SQL Server 2005 нагоре