Как вычислить булево поле?

Dims
Дата: 03.02.2009 16:50:29
Я хочу написать запрос, который бы в одном из полей возвращал 1 если одно поле NOT NULL и 0 в противном случае.

Если я тупо пишу

(ResultKurumsal IS NULL) AS Kurumsal

то ругается.
Паганель
Дата: 03.02.2009 16:51:37
А Вы результат какого типа (данных) получить хотели?
Glory
Дата: 03.02.2009 16:52:02
В MSSQL нет полей типа boolean
iap
Дата: 03.02.2009 16:52:22
SELECT SIGN(ISNULL(ResultKurumsal,0))
SELECT CAST(ISNULL(ResultKurumsal,0) AS BIT)
Gluck_13
Дата: 03.02.2009 17:04:08
iap
SELECT SIGN(ISNULL(ResultKurumsal,0))
SELECT CAST(ISNULL(ResultKurumsal,0) AS BIT)


А если там изначально 0?

Лучше

cast((case when ResultKurumsal is null then 0 else 1 end) as bit)
iap
Дата: 03.02.2009 17:13:32
Gluck_13
iap
SELECT SIGN(ISNULL(ResultKurumsal,0))
SELECT CAST(ISNULL(ResultKurumsal,0) AS BIT)
А если там изначально 0?
SELECT SIGN(ISNULL(1+ResultKurumsal,0))
Правда, есть недостаток - предполагается, что поле числовое, а мы не знаем, какого оно типа. И тип результата, кстати, тоже не знаем
Gluck_13
Дата: 03.02.2009 17:18:25
iap
SELECT SIGN(ISNULL(1+ResultKurumsal,0))
Правда, есть недостаток - предполагается, что поле числовое, а мы не знаем, какого оно типа. И тип результата, кстати, тоже не знаем


Даже если числовое - а если там -2 (минус два)? ))
Dims
Дата: 03.02.2009 18:26:52
Спасибо, я в общем-то, о способе

(case when ResultKurumsal is null then 0 else 1 end)

знал, только как-то не верилось, что это и есть штатный способ.