Dmitry Yemanov:
> St. Alex wrote:
> >
> > Ведь по мат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)
>
> Неверно. Ты получаешь: not (unknown or false or false), что дает not
> (unknown), что равно unknown.
>

Да. это уже ближе к истине. Так примерно в release notes и было
написано а не то что Влад написал что любое сравнение с нулл дает
false... Хотя чисто "по понятиям" если буквально рассамтривать условие
3 not in  (null,1,2) получаем, что "да", 3 не является ни одним из
членов перечисленного множества... Мне кажется, что когда логика SQL
противоречит человечаской - это не есть хорошо. Написанный нами за три
года код будет трудно пересмотреть на предмет изменившегося поведения
подобных запросов :-(

Ответить