powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Что-то не пойму с NULL
6 сообщений из 6, страница 1 из 1
Что-то не пойму с NULL
    #33967352
alexFV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
IF (null = null)
	?"ДА"
ELSE
	?"НЕТ"
ENDIF 
Выводится "НЕТ", если это впринципе понятно, то почему тогда вывидся "НЕТ" в обратном случае:
Код: plaintext
1.
2.
3.
4.
IF (null <> null)
	?"ДА"
ELSE
	?"НЕТ"
ENDIF 
...
Рейтинг: 0 / 0
Что-то не пойму с NULL
    #33967382
Проходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо так сравнивать! Null ничему не равен! Там неизвестно что! Можно только определить наличие или отсутствие Null. IsNull()
...
Рейтинг: 0 / 0
Что-то не пойму с NULL
    #33967480
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Что-то не пойму с NULL
    #33967784
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все логично
расшифровывая твой IF
получаем
IF (условие) = .T.

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

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

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

IF isnull(переменная)
?"ДА"
ELSE
?"НЕТ"
ENDIF
...
Рейтинг: 0 / 0
Что-то не пойму с NULL
    #33968022
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Что-то не пойму с NULL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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