Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 set ansi_nulls off не работает ???  [new]
Vovan_A
Guest
В таблицах A и B есть строчки с полями id со значениями null
Пишу запрос:

set ansi_nulls off
select * from A,B
where a.id=b.id


но строчки с null-овскими значениями поля id не попадают в выборку, почему такое может происходить?
11 ноя 05, 15:21    [2060710]     Ответить | Цитировать Сообщить модератору
 Re: set ansi_nulls off не работает ???  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Как раз работает так, как описано в документации:

When SET ANSI_NULLS is OFF, the Equals (=) and Not Equal To (<>) comparison operators do not follow the SQL-92 standard. A SELECT statement using WHERE column_name = NULL returns the rows with null values in column_name. A SELECT statement using WHERE column_name <> NULL returns the rows with nonnull values in the column. In addition, a SELECT statement using WHERE column_name <> XYZ_value returns all rows that are not XYZ value and that are not NULL.

И где тут про сравнение двух колонок с NULLами?!

Осталось только уточнить, что ВЫ в результате такого запроса хотите получить?!
11 ноя 05, 15:30    [2060768]     Ответить | Цитировать Сообщить модератору
 Re: set ansi_nulls off не работает ???  [new]
Vovan_A
Guest
Хотелось бы получить строки со значением поля id = null.
Вот что написано в BOL :
NULL Comparison Search Conditions
Transact-SQL supports an extension that allows for the comparison operators to return TRUE or FALSE when comparing against null values. This option is activated by setting ANSI_NULLS OFF. When ANSI_NULLS is OFF, comparisons such as ColumnA = NULL return TRUE when ColumnA contains a null value and FALSE when ColumnA contains some value besides NULL. Also, a comparison of two expressions that have both evaluated to null values yields TRUE.

Почему строчки с null-овскими значениями поля id не попадают в выборку?
11 ноя 05, 16:28    [2061209]     Ответить | Цитировать Сообщить модератору
 Re: set ansi_nulls off не работает ???  [new]
Glory
Member

Откуда:
Сообщений: 104760
Vovan_A
Почему строчки с null-овскими значениями поля id не попадают в выборку?

Потому что сравнение столбца со столбцом не есть Search Condition
11 ноя 05, 16:31    [2061226]     Ответить | Цитировать Сообщить модератору
 Re: set ansi_nulls off не работает ???  [new]
Vovan_A
Guest
Glory
Vovan_A
Почему строчки с null-овскими значениями поля id не попадают в выборку?

Потому что сравнение столбца со столбцом не есть Search Condition

т.е. тем самым вы хотите сказать, что строчки с null-овскими значениями поля id нельзя вытащить в выборку? всмысле через изначальный запрос?
11 ноя 05, 16:49    [2061341]     Ответить | Цитировать Сообщить модератору
 Re: set ansi_nulls off не работает ???  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
тоже как-то попался :)

select * from A,B
where a.id=b.id or (a.id is null and b.id is null)
11 ноя 05, 17:22    [2061480]     Ответить | Цитировать Сообщить модератору
 Re: set ansi_nulls off не работает ???  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=186214&hl=
11 ноя 05, 17:23    [2061484]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить