2009-09-30 7 views
8

Chcę użyć obliczonej kolumny bitowej, która będzie prawdą, jeśli inna kolumna w tabeli nie ma wartości null. Jaka jest na to poprawna formuła?Sql Server Computed Column Składnia formuły

HasLabel = computed column (bit) 
Label = varchar NULL 

Następująca formuła nie jest sprawdzana. - czego mi brakuje?
Wzór dla HasLabel = Label IS NOT NULL

Odpowiedz

26

Obliczona kolumna musi zwracać wartość, podczas gdy ty właśnie robisz porównanie. Zamiast tego spróbuj tego:

case when label is null then 0 else 1 end 

SQL Server nie zrozumie tego jako kolumny, która nie będzie jednak możliwa do zmienienia. Aby to zrobić, zmień obliczenie na:

isnull(case when label IS NULL then 0 else 1 end, 0) 
+1

Lub 'ISNULL (CASE WHEN label IS NULL THEN 0 END, 1)' jest nieco krótszy. –

+0

@MartinSmith A ten jest jeszcze trochę krótszy: 'isnull (case when label> 1 then 1 end, 0)' – RedFilter