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

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

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

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

Информацию о функции IsNull можете найти (для тренировки) в BOL (т.е. в Books-On-Line).
...
Рейтинг: 0 / 0
18.12.2001, 13:30
    #32019226
olden69
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не обрабатывается NULL в SELECT...WHERE pole<>1
SET ANSI_NULLS
тады накой?
или для выборок он - пустое место?
типа диалект
...
Рейтинг: 0 / 0
18.12.2001, 14:08
    #32019232
Alexander Chepackav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не обрабатывается NULL в SELECT...WHERE pole<>1
Дык я ж не зря 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
19.12.2001, 05:03
    #32019266
Слон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не обрабатывается NULL в SELECT...WHERE pole<>1
Небольшое дополнение. Никогда не советую использовать функции в WHERE clause. Это скорее всего приведет к неиспользованию индекса, если таковой был на столбцах, указанных в WHERE clause. Вместо этого лучше сказать WHERE (Pole1 IS NULL OR Pole1 <> 1)
...
Рейтинг: 0 / 0
19.12.2001, 08:11
    #32019282
Replicant
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не обрабатывается NULL в SELECT...WHERE pole<>1
Слон, ты - супер!

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


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