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

Adicione cláusulas WHERE ao SQL dinamicamente / programaticamente


Você pode fazer isso apenas em sql, assim:
SELECT * 
FROM tUsers 
WHERE 1 = 1
  AND (@userID IS NULL OR RTRIM(Name) = @userID )
  AND (@password IS NULL OR RTRIM(Password) = @password)
  AND (@field2 IS NULL OR Field2 = @field2)
....

Se algum parâmetro for passado para o procedimento armazenado com um NULL valor então toda a condição será ignorada.

Observe que :adicionei WHERE 1 = 1 para que a consulta funcione caso nenhum parâmetro seja passado para a consulta e neste caso todo o conjunto de resultados será retornado, pois 1 = 1 é sempre verdade.