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

Podmíněná klauzule kde

Někteří lidé tuto techniku ​​používají

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

Zaručuje však, že nikdy nedostanete hledání indexu ve sloupci itemid.

Lepší přístup, pokud je tabulka vůbec velká, je rozdělit dotaz na 2 samostatné případy

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

Pokud je počet kombinací příliš velký, můžete zvážit dynamické SQL. Nejprve se ujistěte, že rozumíte SQL injection.

Ref:Podmínky dynamického vyhledávání v T-SQL



  1. Jak mohu vymazat obrazovku v konzole MySQL?

  2. Jak předat proměnné SSIS ve výrazu SQLCommand ODBC?

  3. Postgres UNIQUE CONSTRAINT pro pole

  4. Oznámení MySQL 5.6 EOL