Значение в [Column3]
отсутствует в списке значений, указанных в вашем операторе CASE
(т. Е. Это не A
, B
или C
), поэтому результат оператора равен NULL
.CASE
неявно возвращает ELSE NULL
, если не указано иное.
Из DOCS
ELSE else_result_expression Возвращается ли выражение, еслиникакая операция сравнения не оценивается как ИСТИНА.Если этот аргумент пропущен и никакая операция сравнения не оценивается как TRUE, CASE возвращает NULL .else_result_expression - любое допустимое выражение.Типы данных else_result_expression и любого result_expression должны быть одинаковыми или неявным преобразованием.
Для обработки этой возможности добавьте предложение ELSE
, которое возвращает либо существующее значение (показано ниже), либозначение по умолчанию на ваш выбор.Например:
UPDATE [Table 1]
SET [Column1] = '2', [Column2] =
CASE
WHEN [Column3] = 'A' THEN '1'
WHEN [Column3] = 'B' THEN '2'
WHEN [Column3] = 'C' THEN '3'
ELSE [Column2]
END
WHERE [Column4] IN ('1118')