sql >> Database >  >> RDS >> Sqlserver

Voorwaardelijke check in Where-clausule

Sommige mensen gebruiken deze techniek

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

Het garandeert echter dat u nooit een indexzoekopdracht krijgt in de itemid-kolom.

Een betere benadering als de tabel al groot is, is om de query op te splitsen in 2 afzonderlijke gevallen

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

Als het aantal combinaties te groot is, kun je dynamische SQL overwegen. Zorg ervoor dat u eerst SQL-injectie begrijpt.

Ref:Dynamische zoekvoorwaarden in T-SQL



  1. 3 manieren om het kolomgegevenstype in Oracle te controleren

  2. Voeg een kolom toe aan een tabel, als deze nog niet bestaat

  3. De kolommen van een tabelkolommen hernoemen volgens een toewijzing die in een andere tabel is gedefinieerd - met MYSQL

  4. Verbinding maken met MySQL-databases