#sql-server #tsql
#sql-server #tsql
Вопрос:
Если нет, есть ли альтернативный способ переключения между операторами SELECT с использованием идентификатора CASE или IF / THEN, НЕ помещая сначала оператор в скалярную переменную?
Есть ли способ отформатировать это без использования IS и использовать знак =, чтобы это работало?
SELECT ID FROM TABLE WHERE ID = Null
Комментарии:
1. Когда вам нужно проверить наличие NULL,
IS NULL
orIS 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 .