Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Феномен? <Значение> NOT IN (SELECT NULL) = NULL  [new]
AJern
Member

Откуда: Norway
Сообщений: 47
Всем доброго времени суток.

Такая проблемка. При выполнении нижеуказанного SQL я ожидау получить цифру 2 в резултатe, но результат остается пустой потому, что в нижнем селекте есть NULL. Но ведь значение 2 отличается от значения NULL. Я знаю что есть куча способов как это обойти. Но кто-то может обязнить этот феномен?
SELECT bbb.a 
FROM   (SELECT 1 AS a 
        UNION 
        SELECT 2) bbb 
WHERE  bbb.a NOT IN (SELECT 1 b 
                     UNION 
                     SELECT NULL) 

------------
С уважением
Анатолий
12 авг 09, 11:50    [7526919]     Ответить | Цитировать Сообщить модератору
 Re: Феномен? <Значение> NOT IN (SELECT NULL) = NULL  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
AJern
отличается от значения NULL.
Вы ошибаетесь. Это неопределено (UNDEFINED).
12 авг 09, 11:54    [7526957]     Ответить | Цитировать Сообщить модератору
 Re: Феномен? <Значение> NOT IN (SELECT NULL) = NULL  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36799
Этот феномен давно уже описан в документации.
ms-help://MS.SQLCC.v10/MS.SQLSVR.v10.en/s10de_6tsql/html/4419de73-96b1-4dfe-8500-f4507915db04.htm

Any null values returned by subquery or expression that are compared to test_expression using IN or NOT IN return UNKNOWN. Using null values in together with IN or NOT IN can produce unexpected results.
12 авг 09, 11:54    [7526963]     Ответить | Цитировать Сообщить модератору
 Re: Феномен? <Значение> NOT IN (SELECT NULL) = NULL  [new]
AJern
Member

Откуда: Norway
Сообщений: 47
Спасибо за ответы. Учтем на будущее. Странно что при суммировании где присутствует NULL мы получаем warning. А при такой более критичной ситуацыи просто ничего.

------------
С уважением
Анатолий
12 авг 09, 12:13    [7527098]     Ответить | Цитировать Сообщить модератору
 Re: Феномен? <Значение> NOT IN (SELECT NULL) = NULL  [new]
Glory
Member

Откуда:
Сообщений: 104760
AJern
Спасибо за ответы. Учтем на будущее. Странно что при суммировании где присутствует NULL мы получаем warning. А при такой более критичной ситуацыи просто ничего.

Здесь нет критичной ситуации. Потому что троичная логика работы с NULL-ми документирована уже с десяток лет.
12 авг 09, 12:15    [7527113]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить