Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Ajouter des clauses WHERE à SQL dynamiquement / par programmation

Vous pouvez le faire uniquement en sql, comme ceci :

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)
....

Si un paramètre est passé à la procédure stockée avec un NULL valeur alors toute la condition sera ignorée.

Notez que :J'ai ajouté WHERE 1 = 1 afin de faire fonctionner la requête dans le cas où aucun paramètre n'est passé à la requête et dans ce cas tout le jeu de résultats sera retourné, puisque 1 = 1 est toujours vrai.