Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL игнорира част от WHERE, ако параметърът е нула

Какво ще кажете за нещо като

SELECT Id, col1, col2, col3, col4 
FROM    myTable 
WHERE   col1 LIKE @Param1+'%'
OR      @Param1 IS NULL

в този конкретен случай бихте могли също да използвате

SELECT Id, col1, col2, col3, col4 
FROM    myTable 
WHERE   col1 LIKE ISNULL(@Param1,'')+'%'

Но като цяло можете да опитате нещо като

SELECT Id, col1, col2, col3, col4 
FROM    myTable 
WHERE   (condition1 OR @Param1 IS NULL)
AND     (condition2 OR @Param2 IS NULL)
AND     (condition3 OR @Param3 IS NULL)
...
AND     (conditionN OR @ParamN IS NULL)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server еквивалентен на MySQL enum тип данни?

  2. Как да прикача MDF без лог файл?

  3. Как да вмъкна променлива в таблица с динамична заявка?

  4. Добавяне на колона, ако тя не съществува към всички таблици?

  5. SQL Server 2012 запитва данни от Access 2007 с помощта на грешка OPENROWSET