Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

WHERE-Klauseln dynamisch/programmgesteuert zu SQL hinzufügen

Sie können dies nur in SQL wie folgt tun:

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

Wenn irgendein Parameter mit einem NULL an die gespeicherte Prozedur übergeben wird Wert, dann wird die ganze Bedingung ignoriert.

Beachten Sie das :Ich habe WHERE 1 = 1 hinzugefügt damit die Abfrage funktioniert, falls kein Parameter an die Abfrage übergeben wird und in diesem Fall die gesamte Ergebnismenge zurückgegeben wird, da 1 = 1 ist immer wahr.