Философ
Зарегистрирован: 29 September 2002
Сообщения: 554
Примеры кода: 1
|
RE[4]: Boolean_expression and If ... |
20 January 2003 18:53 |
|
|
|
|
Понятно, что такая конструкция не работает:
Declare @a as int,
@b as int
Set @b=0
Set @a=null
if @a<>@b
begin
select '2'
end
Как быть?
Чет я не совсем понял!? Ты хочешь что бы null и 0 были эквивалентны ? Тогда проверяй таким образом:
if ISNULL(@a,0.00)=ISNULL(@b,0.00)
Не совсем так. В процедуру, модифицирующую данные таблицы, я добавил код, отслеживающий модификацию и протоколирующий их в другой таблице. Если null и 0 делать эквивалентными, то соответственно, я не смогу отследить изменения null на 0 и наоборот.
В принципе пока вижу 2 варианта:
1.
Declare @a as int,
@b as int
Set @b=0
Set @a=null
if @a=@b
...
else
begin
select '2'
end
2.
Declare @a as int,
@b as int
Set @b=0
Set @a=null
if (@a is null and @b is not null) or (@a is not null and @b is null) or @a<>@b
begin
select '2'
end
/blockquote>
В принципе первый вариант не пройдет, так как он всегда будет ложным если хоть одно из значений равно NULL.
Best regards,
Andrey Barashkin
|
|