sql >> Base de Datos >  >> RDS >> Sqlserver

Agregue cláusulas WHERE a SQL de forma dinámica / programática

Puede hacer esto solo en sql, así:

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 algún parámetro pasado al procedimiento almacenado con un NULL entonces se ignorará toda la condición.

Tenga en cuenta que :Agregué WHERE 1 = 1 para que la consulta funcione en caso de que no se haya pasado ningún parámetro a la consulta y, en este caso, se devolverá todo el conjunto de resultados, ya que 1 = 1 siempre es cierto.