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

Betinget Check-in Where-klausul

Nogle mennesker bruger denne teknik

... WHERE @itemid IS NULL OR tbl.itemid = @itemid

Det garanterer dog, at du aldrig vil få en indekssøgning på itemid-kolonnen.

En bedre tilgang, hvis tabellen overhovedet er stor, er at dele forespørgslen op i 2 separate sager

IF(@itemid IS NULL)
  SELECT foo FROM bar
ELSE
  SELECT foo FROM bar WHERE itemid = @itemid

Hvis antallet af kombinationer er for stort, kan du overveje dynamisk SQL. Sørg for, at du forstår SQL-injektion først.

Ref:Dynamiske søgebetingelser i T-SQL



  1. psql:FATAL:rolle postgres eksisterer ikke (med -h localhost mulighed)

  2. Tilføjelse af SUMMEN af to uafhængige tabeller

  3. MySQL:Sorter '1st' FØR '101st'

  4. PostgreSQL ændrer felter dynamisk i NEW record i en triggerfunktion