"St. Alex" ...
>
> > Патамушта любое сравнение с null даёт false.
> >Это проходят в первом классе, ей-богу...
>
> Я знаю, что любое сравнение с нулл дает ложь. поэтому меня и смутило,
> что когда я пишу id not in (null, 1,2,2,1) у меня получается пустой
> результат.
> null,1,2,2,1 - результат выполнения подзапроса
> Ведь по матeматической логике данное выражение преобразовывается в
> not (id in (null,1,2,2,1)) -> not (id=null or id=1 or id=2),
Нет, не так. Это несколько другая логика, не двоичная.
> например,
> для id=3 пполучаем:
> not (3=null or 3=1 or 3=2) -> not(flase or false or false) для id=3
> результат должен быть возвращен в ответе?
> а если написать id not in (1,2,2,1) то возвращаются результаты 3, 4, 5
X op NULL, NOT X op NULL всегда даст false.
Иначе бы результаты зависели от способа преобразования выражения :
not x in (null, 1) ==
a) not (x = null or x = 1) ==
not (false or x = 1) ==
not (x = 1) ==
(x != 1)
b) not (x = null or x = 1) ==
(x != null) and (x != 1) ==
false and (x != 1) ==
false
Как видишь, применяя обычную логику, получаем разные результаты,
в зависимости от того преобразования, которое мы выбрали.
--
Хорсун Влад