Ваш код не должен компилироваться, поэтому я думаю, что это не настоящий код.(1) Отсутствует THEN
после WHEN
.(2) Значения A
и B
должны быть заключены в одинарные кавычки, в противном случае они будут распознаваться как имена столбцов.Так что это должно быть записано как:
SELECT *,
CASE
WHEN ColA NOT IN('A','B') THEN REPLACE(ColA, ColA, 'NO')
ELSE ColA
END NewColA
FROM dataset;
Это даст желаемые результаты, если в ColA
не будет значения NULL
.В случае NULL
, ColA NOT IN('A','B')
оценивается как NULL
, и замена не будет.Вы можете написать оператор, используя Снежинка IFF()
, например, так:
SELECT *, IFF(ColA IN ('A', 'B'), ColA, 'NO') NewColA
FROM dataset;
В случае, если ColA IN ('A', 'B')
оценивается как NULL
, тогда FALSE
возвращается часть IFF()
, что составляет 'NO'