sql >> Database >  >> RDS >> Sqlserver

WHERE-instructie overslaan als de variabele voor die instructie null is

Gebruik voor dit eenvoudige geval in uw vraag gewoon

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

Als uw werkelijke situatie complexer is, kunt u gebruik maken van

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

De reden voor het nodig hebben van de recompile tip is om te voorkomen dat u één plan heeft voor beide gevallen en een onnodige scan uitvoert in het geval dat u een expliciete waarde opgeeft.

Deze en andere alternatieven, zoals het dynamisch genereren van de zoekopdracht, worden in detail besproken in het artikel Dynamisch zoeken Voorwaarden in T-SQL



  1. Mysql-query WHERE-kolom is in json-array

  2. MYSQL Selecteer één willekeurig record uit elke categorie

  3. Null-resultaten opnemen in group_concat

  4. Databaseprobleem, hoe de veranderende gegevensstructuur op te slaan?