Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dodaj klauzule WHERE do SQL dynamicznie / programowo

Możesz to zrobić tylko w sql, tak:

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

Jeśli jakikolwiek parametr przekazany do procedury składowanej z NULL wartość wtedy cały warunek zostanie zignorowany.

Pamiętaj, że :dodałem WHERE 1 = 1 aby zapytanie zadziałało w przypadku, gdy do zapytania nie przekazano żadnego parametru i w tym przypadku zostanie zwrócony cały zestaw wyników, ponieważ 1 = 1 jest zawsze prawdziwe.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyeksportować wynik zapytania do pliku .csv lub pliku rozdzielanego tabulatorami w programie SQL Server Management Studio (SSMS) — samouczek SQL Server/TSQL — część 23

  2. Podzapytanie programu SQL Server zwróciło więcej niż 1 wartość. Nie jest to dozwolone, gdy podzapytanie następuje po =, !=, <, <=,>,>=

  3. ExecuteScalar vs ExecuteNonQuery podczas zwracania wartości tożsamości

  4. Jak utworzyć widok w SQL Server

  5. Jak naprawić „Powiązana funkcja partycji generuje więcej partycji niż jest grup plików wymienionych w schemacie” Msg 7707 w SQL Server