Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Что-то не пойму с NULL / 6 сообщений из 6, страница 1 из 1
06.09.2006, 11:25
    #33967352
alexFV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что-то не пойму с NULL
Код: plaintext
1.
2.
3.
4.
IF (null = null)
	?"ДА"
ELSE
	?"НЕТ"
ENDIF 
Выводится "НЕТ", если это впринципе понятно, то почему тогда вывидся "НЕТ" в обратном случае:
Код: plaintext
1.
2.
3.
4.
IF (null <> null)
	?"ДА"
ELSE
	?"НЕТ"
ENDIF 
...
Рейтинг: 0 / 0
06.09.2006, 11:30
    #33967382
Проходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что-то не пойму с NULL
Не надо так сравнивать! Null ничему не равен! Там неизвестно что! Можно только определить наличие или отсутствие Null. IsNull()
...
Рейтинг: 0 / 0
06.09.2006, 11:58
    #33967480
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что-то не пойму с NULL
alexFV
Код: plaintext
1.
2.
3.
4.
IF (null = null)
	?"ДА"
ELSE
	?"НЕТ"
ENDIF 
Выводится "НЕТ", если это впринципе понятно, то почему тогда вывидся "НЕТ" в обратном случае:
Код: plaintext
1.
2.
3.
4.
IF (null <> null)
	?"ДА"
ELSE
	?"НЕТ"
ENDIF 


См хелп Behavior of Null Values in Logical Expressions
...
Рейтинг: 0 / 0
06.09.2006, 13:05
    #33967784
-=AlexiS=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что-то не пойму с NULL
все логично
расшифровывая твой IF
получаем
IF (условие) = .T.

null = null равно NULL
null = null тоже равно NULL

NULL неравен .T.
поэтому всегда работает else- ветка
...
Рейтинг: 0 / 0
06.09.2006, 13:26
    #33967867
Недоходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что-то не пойму с NULL
2 alexFV

лучше как сказал проходящий

IF isnull(переменная)
?"ДА"
ELSE
?"НЕТ"
ENDIF
...
Рейтинг: 0 / 0
06.09.2006, 14:05
    #33968022
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что-то не пойму с NULL
NULL - это неизвестно какое значение. Не пустое, а именно "неизвестное".

Если сравнить неизвестное значение с другим неизвестным значением, то и получишь неизвестно что, вне зависимости от того, как именно сравнивал. На равно или не равно.

То, что лежит в правом ящике равно тому что лежит в левом ящике? Может быть не равно? Да откуда я знаю! Я же не знаю, ЧТО лежит в этих ящиках? На любой вопрос о сравнении последует ответ "Не знаю".

Оператор IF анализирует результат вычисления условия и проверят, равен ли этот результат "Истина" или нет. Ответ "Не знаю", очевидно не равен "Истина", поэтому переходим на команду ELSE.

Если предполагается сравнивать 2 значения, каждое из которых может иметь значение NULL, то это делается примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
LOCAL lcEmptyValue
lcEmptyValue =  0 
IF NVL(m.Var1,m.lcEmptyValue) = NVL(m.Var2,m.lcEmptyValue)
...
ELSE
...
ENDIF

Т.е. возможное значение NULL заменяется на корректное пустое значение. В данном случае я предполагал, что речь идет о числовых значениях, поэтому в качестве "пустого" значения выбрал 0.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Что-то не пойму с NULL / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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