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

SQL ignoruje część WHERE, jeśli parametr ma wartość null

Co powiesz na coś takiego

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

w tym konkretnym przypadku mogłeś również użyć

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

Ale ogólnie możesz spróbować czegoś takiego

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. Sprawdź, czy data nakłada się w SQL

  2. Aktualizowanie dostawcy danych Crystal Reports

  3. Jak dodać klucz podstawowy autoincrement w serwerze sql za pomocą nvarchar?

  4. Zaokrąglanie milisekund w T-SQL

  5. Jak zwrócić dwie kolumny z pierwszej tabeli, jeśli tylko jedna kolumna częściowo pasuje do drugiej?