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

Springer WHERE-sætningen over, hvis variablen for den sætning er null

For dette simple tilfælde i dit spørgsmål skal du bare bruge

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

Hvis din faktiske situation er mere kompleks, kan du bruge

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

Årsagen til at have brug for recompile tip er at undgå at have en enkelt plan, der dækker begge tilfælde og at lave en unødvendig scanning i tilfælde af, at du angiver en eksplicit værdi.

Disse og andre alternativer såsom generering af forespørgslen dynamisk diskuteres i detaljer i artiklen Dynamisk søgning Betingelser i T-SQL



  1. Kalder du Oracles lagrede procedure fra C#?

  2. Give privilegier på fremtidige borde i PostgreSQL?

  3. mySQL summen af ​​to værdier i 2 forskellige tabeller

  4. Oracle SQL Developer - Vinduet forespørgselsresultater med gitter mangler