Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / АХТУНГ!!! Where [Поле] = Null / 7 сообщений из 7, страница 1 из 1
25.05.2004, 11:31
    #32531970
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
АХТУНГ!!! Where [Поле] = Null
В недрах унаследованного софта (Access 97) нашел такой кусочек кода:

Set rst = CurrentDb.OpenRecordset("Select * From [Таблица] Where [Поле] = Null")

И эта собака дикая - работает!!! Причем работает так, как (по всей видимости) задумывал неизвестный педераст - автор этой программы. Т.е. в полученном рекордсете содержаться записи, в которых [Поле] Is Null

Обнаружил при переходе на Access 2002, который интерпретируют "[Поле]=Null" правильно, т.е. False при любом значении (в том числе отсутствии значения) в Поле

Это глюк? Фича? Или это я америку открыл и на граблю наступил?

З.Ы. Почему нет блюющего смайлика?
...
Рейтинг: 0 / 0
25.05.2004, 11:38
    #32531993
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
АХТУНГ!!! Where [Поле] = Null
авторкоторый интерпретируют "[Поле]=Null" правильно, т.е. False

Не знаю как в Аксе, но, вообще-то он не в false преобразовывает, а в Null

Можно проверить

1. ([поле]=Null) = false
2. ([поле]=Null) is null

ЗЫ: проверил - 1 первый вариант не выдает полей, а 2 - выдает все :)
...
Рейтинг: 0 / 0
25.05.2004, 11:44
    #32532016
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
АХТУНГ!!! Where [Поле] = Null
Сори
Сравнение с Null'ом дает в итоге не False, конечно же, а Null
Суть от этого не меняется. Null в предложении Where записей выводить не должен.
Однако в 97-ом аксесе - сравнение с Null'ом (=Null) работает как проверка на Null (Is Null)

Хочу блюющий смайлик. Как представлю, сколько таких мест еще осталось...
...
Рейтинг: 0 / 0
25.05.2004, 11:48
    #32532035
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
АХТУНГ!!! Where [Поле] = Null
2 ЛП

В MSSQL есть спец опция:
SET ANSI_NULLS ON|OFF

Вот она как раз такое и проделывает
Т.е. если ON, то сравнение с NULL допустимы, иначе чисто NULL будет возвращать :)

Может для 97 ANSI стандарт ближе?
...
Рейтинг: 0 / 0
25.05.2004, 14:03
    #32532437
TriAxp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
АХТУНГ!!! Where [Поле] = Null
Q237992

SYMPTOMS
When using an SQL statement with a WHERE clause that contains a test for NULL using the = operator, records that match the query are not returned in the recordset.

These queries worked correctly with Jet 3.5 and returned the records as expected.
This behavior will only be exhibited on computers with MDAC 2.1 and later that have Jet 4.0 installed.

CAUSE
Jet 4.0 made some changes to the SQL syntax and is now more SQL ANSI 92 compliant than before. Especially SQL ANSI 92 NULL behavior was implemented. Also remember that the result of a Boolean expression can have three results - TRUE, FALSE and NULL (in some documents referred as UNKNOWN).

RESOLUTION
Use the IS keyword in queries that test for NULL. This change will not break on systems with Jet 3.5 as Jet 3.5 accepted both types of queries.

STATUS
This behavior is by design.
...
Рейтинг: 0 / 0
25.05.2004, 14:18
    #32532483
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
АХТУНГ!!! Where [Поле] = Null
Ну вот, опять меня носом в хелп ткнули

Однако непонятен мне такой by disign
Откуда вообще взялось в 97-м аксесе сравнение с Null'ом через знак равенства? В целях совместимости со 2-м аксесом что-ли?
Кто-нибудь Access 2.0 помнит? Или 1.0? Может там не было слова Is, потому через "=" и сделали?
...
Рейтинг: 0 / 0
25.05.2004, 14:24
    #32532499
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
АХТУНГ!!! Where [Поле] = Null
Я начинал на Аксессе Втором. Но сколько себя помню - всегда знал, что нельзя писать =Null. Впрочем, возможно, у меня это сидит в голове из хелпа про VBA, в котором это касалось ифов. А на селекты я распространил сам... ХЗ.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / АХТУНГ!!! Where [Поле] = Null / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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