Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Aggiungi clausole WHERE a SQL in modo dinamico/programmatico

Puoi farlo solo in sql, in questo modo:

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 un parametro è passato alla stored procedure con un NULL valore, l'intera condizione verrà ignorata.

Nota che :Ho aggiunto WHERE 1 = 1 per far funzionare la query nel caso in cui nessun parametro sia passato alla query e in questo caso verrà restituito tutto il set di risultati, poiché 1 = 1 è sempre vero.