:: Курилка
Загадка )
Равиль

Сообщений: 6594
Откуда: Уфа
Дата регистрации: 01.08.2003
Всем привет !
Вчера случайно наткнулся )

X + 10 = X
X - 10 = X

X = ?


------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/2 positive
Re: Загадка )
Равиль

Сообщений: 6594
Откуда: Уфа
Дата регистрации: 01.08.2003
Что, правда никто не сталкивался ?

Тогда подсказка :

X*10 = Ошибка


------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive
Re: Загадка )
sphinx
Автор

Сообщений: 31623
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
X = NULL




------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: Загадка )
Равиль

Сообщений: 6594
Откуда: Уфа
Дата регистрации: 01.08.2003
Да, .Null. не дает ошибки даже при умножении

Мой вариант был пустая дата {}
? {}+10
? {}-10
? {}*10


------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive
Re: Загадка )
sphinx
Автор

Сообщений: 31623
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Равиль, предупреждать надо. Ставить правильно ТЗ. Математически, или в языках программирования. Математически был готов написать - нет решений. Но решил подождать умных людей.

А операции с NULL - классика же. Оборачиваю цифровые данные после LEFT JOIN через NVL() (это на Фоксе, на pgSQL - coalesce() )

Поэтому не налетал на сложение/вычитание с NULL.

А так красиво - поморщил лоб, застал врасплох, на это и был расчет.

P.S. И с пустой датой в чистом виде крайне редко работаю, не заполнили - в базе можно хранить значение по умолчанию, типа 01.01.1900
Но это на вкус и цвет.

И я больше привык контролировать данные на этапе заполнения формы, нежели констрейнты/триггеры/прочее (пользуюсь, понятно). Но так привык и так надежнее.


------------------
"Veni, vidi, vici!"(с)




Исправлено 1 раз(а). Последнее : sphinx, 21.08.24 09:57
Ratings: 0 negative/0 positive
Re: Загадка )
leonid

Сообщений: 3223
Откуда: Рига
Дата регистрации: 03.02.2006
NULL - неправильное решение
x = NULL
? x + 10 = x
? x - 10 = x

Правильно вот так
x = 10^100
? x + 10 = x
? x - 10 = x
Ratings: 0 negative/2 positive
Re: Загадка )
Равиль

Сообщений: 6594
Откуда: Уфа
Дата регистрации: 01.08.2003
Леонид прав, если значение NULL присвоить переменной, ловим сообщение о несоответствии типов,
а так получаем любопытную историю :

? NULL + 10
? NULL - 10
? (NULL+10)=(NULL-10)
? NULL=NULL

все операции с NULL, даже сравнения, возвращают NULL


------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive
Re: Загадка )
Гулин Федор

Сообщений: 4655
Откуда: Минск
Дата регистрации: 24.10.2002
leonid
NULL - неправильное решение
x = NULL
? x + 10 = x
? x - 10 = x

Правильно вот так
x = 10^100
? x + 10 = x
? x - 10 = x
имхо это решение красивей
условно пустая дата это фишка фокса
в скл-сервере такой нет
d+10 выдаст дату на 10 дней вперед - потому это решение по кр. мере более общее
Ratings: 0 negative/0 positive
Re: Загадка )
Равиль

Сообщений: 6594
Откуда: Уфа
Дата регистрации: 01.08.2003
imho тут 2 любопытных момента, не имеющих практического значения, но багофичи :

Clear
*!* 1) Null переменная
? Null + 10 && нет ошибки
x = Null && присваиваем null переменной
? x + 10 && ошибка ) почему ?
*!* 2) Null поле
Create Cursor null_test (nx N(10) Null)
Insert Into null_test (nx) Values (Null)
? nx
? nx + 10 && а тут ошибки нет ))
*!* ps причем все значения имеют тип X (NULL)
? VARTYPE(null)
? VARTYPE(x)
? VARTYPE(nx)


------------------
Тяжело согнать курсором муху с монитора ...




Исправлено 2 раз(а). Последнее : Равиль, 23.08.24 10:51
Ratings: 0 negative/0 positive
Re: Загадка )
sphinx
Автор

Сообщений: 31623
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Цитата:
NULL - неправильное решение

Хорошо. :bi:

Про нуль я больше под Oracle имел в виду.

habr.com


------------------
"Veni, vidi, vici!"(с)




Исправлено 1 раз(а). Последнее : sphinx, 24.08.24 15:25
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 12 (Гостей: 12)

© 2000-2024 Fox Club 
Яндекс.Метрика