Есть ли альтернатива Where is Null с использованием Where = Null ?

#sql-server #tsql

#sql-server #tsql

Вопрос:

Если нет, есть ли альтернативный способ переключения между операторами SELECT с использованием идентификатора CASE или IF / THEN, НЕ помещая сначала оператор в скалярную переменную?

Есть ли способ отформатировать это без использования IS и использовать знак =, чтобы это работало?

     SELECT ID FROM TABLE WHERE ID = Null
  

Комментарии:

1. Когда вам нужно проверить наличие NULL, IS NULL or IS NOT NULL является единственным допустимым способом

2. Ваш вопрос неясен. Пожалуйста, предоставьте дополнительную информацию.

3. Это немного абстрактно, схема и некоторые данные с желаемым результатом помогут.

4. Вы также можете использовать функцию IsNull(col, value), где значение будет возвращено, если столбец равен null . Это работает и в операторах CASE .

Ответ №1:

Нет. NULL не является значением. Подумайте о NULL как о условии, с IS NULL или IS NOT NULL проверяет это условие.

В этом примере вы можете проверить фактическое значение или отсутствие значения, представленного условием

 WHERE
   (X IS NULL OR X = @X)
  

или

 WHERE
  (@X IS NULL OR X = @X)
  

Или сначала проверьте ваши определенные условия:

 WHERE
    CASE X
      WHEN 1 THEN
      WHEN 2 THEN
      ELSE --  includes NULL
   END = ...
  

Ваш вопрос абстрактен, поэтому трудно дать более точный ответ.

Например, у вас возникли проблемы с NOT IN и NULL ? Если это так, используйте NOT EXISTS .