Синтаксис формулы вычисляемого столбца Sql Server

Я хочу использовать вычисляемый битовый столбец, который будет истинным, если другой столбец в таблице не равен нулю. Какая правильная формула для этого?

HasLabel = computed column (bit)
Label = varchar NULL

Следующая формула не проходит проверку. - что я упустил?
Формула для HasLabel = Label IS NOT NULL


person Jeremy    schedule 30.09.2009    source источник


Ответы (1)


Вычисляемый столбец должен возвращать значение, тогда как вы просто выполняете сравнение. Попробуйте это вместо этого:

case when label is null then 0 else 1 end

Однако SQL Server не распознает это как столбец, не допускающий значение NULL. Чтобы справиться с этим, измените вычисление на:

isnull(case when label IS NULL then 0 else 1 end, 0)
person D'Arcy Rittich    schedule 30.09.2009
comment
Или ISNULL(CASE WHEN label IS NULL THEN 0 END, 1) немного короче. - person Martin Smith; 04.06.2013
comment
@MartinSmith А этот еще короче: isnull(case when label > 1 then 1 end, 0) - person D'Arcy Rittich; 05.06.2013