powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / не обрабатывается NULL в SELECT...WHERE pole<>1
7 сообщений из 7, страница 1 из 1
не обрабатывается NULL в SELECT...WHERE pole<>1
    #32019219
olden69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select * from Table1 where Pole1<>1
не возвращает записи Pole1=NULL

Причина? Лекарство?
...
Рейтинг: 0 / 0
не обрабатывается NULL в SELECT...WHERE pole<>1
    #32019220
Alexander Chepack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лекарство: как всегда - RTFM (т.е. BOL)

Причина: Любая операция сравнения с NULL всегда возвращает FALSE. Но имеется такой замечательный
оператор, как IS [NOT] NULL. В Вашем случае необходимо переписать условие как:

where (IsNull(Pole1,0)<>1)

Информацию о функции IsNull можете найти (для тренировки) в BOL (т.е. в Books-On-Line).
...
Рейтинг: 0 / 0
не обрабатывается NULL в SELECT...WHERE pole<>1
    #32019226
olden69
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SET ANSI_NULLS
тады накой?
или для выборок он - пустое место?
типа диалект
...
Рейтинг: 0 / 0
не обрабатывается NULL в SELECT...WHERE pole<>1
    #32019232
Alexander Chepackav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дык я ж не зря BOL почитать советую:

When SET ANSI_NULLS is OFF, the Equals (=) and Not Equal To (<&gt 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.
...
Рейтинг: 0 / 0
не обрабатывается NULL в SELECT...WHERE pole<>1
    #32019266
Фотография Слон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Небольшое дополнение. Никогда не советую использовать функции в WHERE clause. Это скорее всего приведет к неиспользованию индекса, если таковой был на столбцах, указанных в WHERE clause. Вместо этого лучше сказать WHERE (Pole1 IS NULL OR Pole1 <> 1)
...
Рейтинг: 0 / 0
не обрабатывается NULL в SELECT...WHERE pole<>1
    #32019282
Replicant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Слон, ты - супер!

Напомню, что секция типа WHERE PurchDate > GETDATE()
с функцией приведет к использованию индекса, если он есть.
Почему? Потому что PurchDate > GETDATE() является 'аргументом поиска'
(search argument, SARG).
...
Рейтинг: 0 / 0
не обрабатывается NULL в SELECT...WHERE pole<>1
    #32019305
Alexander Chepack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Про функции замечание в общем справедливое - если функция использует в качестве аргументов поля из текущей записи. Но дело в том, что использование условия OR тоже оптимизацию совсем не улучшает. И потом - человек задал вопрос как записи выбрать, про оптимизацию речи не шло - вполне возможно, что там еще какие-то условия в WHERE будут, опять же количество записей в таблице неизвестно...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / не обрабатывается NULL в SELECT...WHERE pole<>1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]