Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Cláusula de Verificação Condicional em Where


Algumas pessoas usam essa técnica
... WHERE @itemid IS NULL OR tbl.itemid = @itemid

Isso garante que você nunca obterá uma busca de índice na coluna itemid.

Uma abordagem melhor se a tabela for grande é dividir a consulta em 2 casos separados
IF(@itemid IS NULL)
  SELECT foo FROM bar
ELSE
  SELECT foo FROM bar WHERE itemid = @itemid

Se o número de combinações for muito grande, você pode considerar o SQL dinâmico. Certifique-se de entender a injeção de SQL primeiro.

Ref:Condições de pesquisa dinâmica em T-SQL