ЯВЛЯЕТСЯ ПУСТЫМ по сравнению с = ПУСТОЙ УКАЗАТЕЛЬ в где пункт + SQL Server

Как проверить значение IS NULL [or] = @param (где @param является пустым),

Исключая:

Select column1 from Table1
where column2 IS NULL => works fine

Если я хочу заменить сравнение значения (ЯВЛЯЕТСЯ ПУСТЫМ) с @param. Как это может быть сделано

Select column1 from Table1
where column2 = @param => this works fine until @param got some value in it and if is null never finds a record.

Как это может достигнуть?

18
задан marc_s 22 March 2010 в 05:58
поделиться

2 ответа

select column1 from Table1
  where (@param is null and column2 is null)
     or (column2 = @param)
{{1} }
37
ответ дан 30 November 2019 в 06:42
поделиться

Для этого не существует универсального подхода к запросам, это может повлиять на производительность. Если вы хотите выйти за пределы , просто чтобы запрос возвращал правильный ответ, независимо от того, насколько он медленный, посмотрите эту статью о условиях динамического поиска в T-SQL, написанную Эрландом Соммарскогом

здесь ссылка на часть на x = @x OR @x IS NULL

2
ответ дан 30 November 2019 в 06:42
поделиться