|
null <> null | ☑ | ||
---|---|---|---|---|
0
DragfaR
10.07.24
✎
14:18
|
Здравствуйте, подскажите, в запросе сравниваю значение если в поле null тогда 1 иначе 2 (облегчил что бы понять почему так) хоть в поле и значение null всегда выдает 2
|
|||
18
Chai Nic
10.07.24
✎
14:52
|
Это вопрос философский. Является ли ничто сущностью, и может ли одно ничто быть равным другому.
|
|||
19
Valdis2007
10.07.24
✎
14:53
|
(14) человек в ужасе...слился похоже...
|
|||
20
Волшебник
10.07.24
✎
14:54
|
(18) Давайте разбираться. Пустая строка не равна пробелу, а уж тем более символу Ø (пустое множество). Значит имеем разные ничто, не равные друг другу (или враг врагу). Враждуют ли разные ничто? Объединяются ли они в альянсы, чтобы воевать против других ничто-альянсов?
|
|||
21
Масянька
10.07.24
✎
14:54
|
Понеслась душа в рай.
|
|||
22
Valdis2007
10.07.24
✎
14:54
|
(18) бесконечность не равна бесконечности это из математики
|
|||
23
Масянька
10.07.24
✎
14:55
|
(18) Как правило, философские вопросы решаются в уютном месте, хорошей компании и с каким-нибудь напитком.
|
|||
24
DragfaR
10.07.24
✎
15:00
|
(4) Спасибо)
|
|||
25
Valdis2007
10.07.24
✎
15:07
|
(23) это предложение?
|
|||
26
Eiffil123
10.07.24
✎
15:36
|
(18) а то что две Лжи равны, это нормально?
|
|||
27
sikuda
11.07.24
✎
09:11
|
(23)(26) Философские вопросы? Это вопросы математики!
Ближе к земле, не надо тень на плетень наводить (11) NULL это пустое множество, это не объект или тип в языке. Это пришло к нас из SQL, там тоже нельзя сравнивать NULL и там тоже есть оператор IS NULL. А в языке 1С Null = Null! (Но это скорее особый случай неопределенно) В Исполнителе 1С тоже Null == Null. php есть null, но он устаревший java, kotlin есть null, но это аналог Неопределенно |
|||
28
Chai Nic
10.07.24
✎
16:49
|
(27) А в SQL?
|
|||
29
maxab72
10.07.24
✎
16:54
|
"бесконечность не равна бесконечности это из математики"
Бесконечность обычно равна 7. "Лекция о броме" |
|||
30
Garikk
10.07.24
✎
17:17
|
(27) не надо тут про математику, математики пусть со своими формулами сидят
корректно ли выражение Организация = null Номенклатура = null Организация=Номенклатура -- что должно быть ложь или истина? и как с точки зрения математики это описано и как в коде 1С выглядеть должно? (10) Это вот тут очень правильная отсылка как раз на эту тему |
|||
31
youalex
10.07.24
✎
17:22
|
ЗаписатьJSON() - NULL нельзя, но можно Неопределено, которое этот метод пишет как null )
|
|||
32
СвинТуз
10.07.24
✎
17:36
|
(0)
Так неопытность и заканчивается. Приходит опыт. Вы молодец, что работаете. |
|||
33
floverr
10.07.24
✎
20:19
|
Предлагаю новый метод: :)
Функсия АЕстьтутьчото(онотутестьилиможетбытьилизатерялось) Экспорт ..... возврат евотамнет; Канесфунксии ну так... поржал))) |
|||
34
dmpl
10.07.24
✎
20:31
|
(30) Результатом сравнения NULL с NULL должно быть NULL.
|
|||
35
Волшебник
10.07.24
✎
20:37
|
(33) Бред
|
|||
36
Волшебник
10.07.24
✎
20:38
|
(34) Но по факту результатом равно "ЛОЖЬ"
|
|||
37
ДедМорроз
10.07.24
✎
20:53
|
Nothing в Visial Basic - это объект,у которого ссылка равна 0,другими словами,пустой указатель,помещенный в тип Variant.
Null и Empty также два разных типа. В 1С аналогом Nothing можно считать пустую ссылку,но так как в 1с нет общего типа ссылки,то пустая ссылка для каждого типа своя. Для 1с Null это значение одноименного типа и оно прекрасно сравнивается с таким же значением. Использование Null в Variant подразумевает,что это не значение,а неизвестно что,поэтому,любая операция сравнения с типом Null возвращает Ложь. |
|||
38
Волшебник
10.07.24
✎
21:11
|
(37) Вас не существует. У Вас ошибка в нике.
|
|||
39
ViSo76
11.07.24
✎
01:03
|
(36) По факту (34) это верный ответ, по тому что сравнение NULL с чем либо будет всегда "неопределенно". NULL это неинициализированное значение. В примере ниже всегда будет 4, так как ИНАЧЕ это подобное "перехвату прерывания"... По этому сравнение нужно делать через вызов проверки на NULL ( ЕСТЬ NULL ).
ВЫБРАТЬ ВЫБОР КОГДА NULL = NULL ТОГДА 1 КОГДА NULL <> NULL ТОГДА 2 КОГДА НЕ NULL = NULL ТОГДА 3 ИНАЧЕ 4 КОНЕЦ Результат запроса ниже так же 4, по тому что срабатывает функция проверки на NULL ВЫБРАТЬ ВЫБОР КОГДА NULL = NULL ТОГДА 1 КОГДА NULL <> NULL ТОГДА 2 КОГДА НЕ NULL = NULL ТОГДА 3 КОГДА NULL ЕСТЬ NULL ТОГДА 4 ИНАЧЕ 5 КОНЕЦ |
|||
40
DrZombi
11.07.24
✎
07:50
|
(0) Null не сравнивают, а пишут "Значение Есть Null"
|
|||
41
Ненавижу 1С
11.07.24
✎
08:15
|
(36) по факту:
ВЫБРАТЬ ТИПЗНАЧЕНИЯ(NULL=NULL) //результат тип NULL |
|||
42
Chai Nic
11.07.24
✎
08:19
|
(26) Таковы правила булевой алгебры, на которой базируется вся наша электронная цивилизация.
|
|||
43
Волшебник
11.07.24
✎
11:30
|
(42) Песня в тему: Булева алгебра
https://suno.com/song/754c51d1-6e69-4130-8d22-099647df4f67 |
|||
44
Valdis2007
11.07.24
✎
11:47
|
(42) ок, тогда расширим наш мысленный эксперемент
в булевой алгебре есть умножение NULL * NULL = ? |
|||
45
Chai Nic
11.07.24
✎
11:53
|
(44) В булевой алгебре нет NULL, там есть ложь и истина. И ложь*ложь=ложь.
|
|||
46
Garikk
11.07.24
✎
11:55
|
(34) вот это очень спорное утверждение, именно по этому в SQL и вообще в языках, null зачастую нельзя сравнивать напрямую такие переменные
ты сравниваешь не null с null, а две переменные имеющие какието значения (в т.ч. null) и в разных ЯП может кардинально различатся поведение с этими сущностями |
|||
47
Garikk
11.07.24
✎
11:57
|
(26) Ложь это 0, а 0 == 0, это логично же
|
|||
48
Волшебник
11.07.24
✎
12:31
|
(45) Я дополню.
В булевой алгебре есть: конъюнкция (обозначается: И, ∧, *, ·) — логическое умножение и дизъюнкция (обозначается: ИЛИ, V, +) — логическое сложение например: ЛОЖЬ * ЛОЖЬ = ЛОЖЬ ЛОЖЬ * ИСТИНА = ЛОЖЬ ИСТИНА * ЛОЖЬ = ЛОЖЬ ИСТИНА * ИСТИНА = ИСТИНА |
|||
49
Ненавижу 1С
11.07.24
✎
12:08
|
(45) в булевой нет, а в SQL есть. Фактически троичная алгебра как булева, дополненная внешним NULL
|
|||
50
Valdis2007
11.07.24
✎
12:32
|
(45) В булевой алгебре нет NULL
формально да... но мысленный эксперемент Джордж Буль нам проводить запретить не может?)) Пустое множество = NULL - ? |
|||
51
Garykom
11.07.24
✎
13:08
|
(50) "Пустое множество" - означает что оно инициализировано, оно есть но пустое
"NULL" - значение не инициализировано, его нет, тип неизвестен |
|||
52
Garykom
11.07.24
✎
13:10
|
(51)+ Любая операция над NULL (кроме IS NULL или IS NOT NULL) должна выдавать или ошибку или NULL
|
|||
53
Волшебник
11.07.24
✎
13:09
|
(51) Даёшь больше смыслов из пустоты!
|
|||
54
Garykom
11.07.24
✎
13:12
|
Можно рассматривать "NULL" как "?" = "Неизвестно"
Вопрос: "Сколько яблок в корзине?" Ответ: NULL (неизвестно), 0, 1, 2 и т.д. |
|||
55
Chai Nic
11.07.24
✎
13:15
|
(50) А при чем тут множества? В булевой алгебре нет никаких множеств, там есть переменные, два возможные значения для них и две операции. И операция отрицания (инверсия).
|
|||
56
Valdis2007
11.07.24
✎
13:15
|
(51) (53)
есть множество всех значений которых нет? другими словами... можно определить множество NULLов? |
|||
57
Valdis2007
11.07.24
✎
13:19
|
(55) В булевой алгебре нет никаких множест
здесь Вы неправы сама булева алгебра определяется через понятие множества Булевой алгеброй называется непустое множество A с двумя бинарными операциями.... wiki:Булева_алгебра |
|||
58
Chai Nic
11.07.24
✎
13:25
|
(57) А, ну да. Ошибся.
|
|||
59
Волшебник
11.07.24
✎
13:26
|
Как произносится NULL? "нул" или "нал"?
|
|||
60
Chai Nic
11.07.24
✎
13:28
|
(59) А ещё есть nil, в паскале
|
|||
61
Garykom
11.07.24
✎
13:30
|
(59) Смотря для кого произносится, для русскоязычных "нулл" для англоязычных "нал"
|
|||
62
Ненавижу 1С
11.07.24
✎
13:31
|
(59) nʌl
|
|||
63
Волшебник
11.07.24
✎
13:32
|
(60) (56) В сообщении (11) достаточно полный список всей этой пустой херни
|
|||
64
Eiffil123
11.07.24
✎
13:49
|
(20) значение НЕОПРЕДЕЛЕНО тоже имеет разные смыслы для разных данных. Например, неопределено для составного поля из строки и числа в целом не тоже самое, что неопределено для ссылочного поля по своему смыслу.
Но НЕОПРЕДЕЛЕНО можно сравнивать через операции = и <>. Почему тогда такой разный подход? |
|||
65
Масянька
11.07.24
✎
13:54
|
извините, но практически в тему: как правильно:
-(Выборка.Сумма + Выборка.СуммаНалога) или -Выборка.Сумма - Выборка.СуммаНалога ? |
|||
66
Ненавижу 1С
11.07.24
✎
14:01
|
(65) оба варианта допустимы. Мне нравится первый больше
|
|||
67
VS-1976
11.07.24
✎
14:02
|
(64) По тому что в 1с неопределено это основа любого класса переменных. Это начало начал, от неопределено порождено всё ( мои мысли ).
Разный подход в чём? |
|||
68
VS-1976
11.07.24
✎
14:11
|
(65) без разницы, но нужно писать на мой взгляд так, чтобы было легче отлаживать. Вариант со скобками визуально понятнее.
|
|||
69
Масянька
11.07.24
✎
14:06
|
(66) (68) Я почти Ванга. Ну, ведьма это точно!
|
|||
70
Garykom
11.07.24
✎
14:28
|
(65) Забыла в ЕСТЬNULL обернуть...
|
|||
71
Eiffil123
11.07.24
✎
14:40
|
(67) разный подход на сравнение двух неопределено и двух Null в запросах
|
|||
72
Eiffil123
11.07.24
✎
14:41
|
(65) можно еще так:
(Выборка.Сумма + Выборка.СуммаНалога) * (-1) |
|||
73
Valdis2007
11.07.24
✎
14:49
|
(72) количество знаков больше буде чем в предыдущем
|
|||
74
ДедМорроз
11.07.24
✎
20:35
|
Null нельзя сравнивать с вопросом и неизвестно.
Истина ИЛИ Null даст в результате Null,хотя любое другое значение даст Истина. |
|||
75
ДедМорроз
11.07.24
✎
20:36
|
Внутри SQL у переменных есть флаг,что значение есть Null.
|
|||
76
Волшебник
11.07.24
✎
20:46
|
(74) в языке запросов 1С значение NULL дополнительно преобразуется в ЛОЖЬ
|
|||
77
DrZombi
12.07.24
✎
06:25
|
Смиритесь, NULL нельзя лишь сравнивать только по прихоти разработчика среды программирования :)
|
|||
78
maxab72
12.07.24
✎
08:12
|
Побуквоедствую... пустое множество это не из булевой алгебры, а из теории множеств. До сих пор помню, что "критерием квадрируемости плоской фигуры по Жордану является то, что площадь контура этой фигуры должна представлять собой пустое множество..."
|
|||
79
Ненавижу 1С
12.07.24
✎
08:37
|
(76) смотри (41)
|
|||
80
Chai Nic
12.07.24
✎
08:46
|
(77) Ага, в том же Си NULL это всего лишь макроподстановка для обычного 0.
|
|||
81
Ненавижу 1С
12.07.24
✎
09:06
|
(78) площадь это скалярная величина, какое множество?
|
|||
82
Волшебник
12.07.24
✎
09:07
|
(79) Там ошибка
|
|||
83
Ненавижу 1С
12.07.24
✎
09:08
|
(82) ну хорошо, ты можешь считать, что там ошибка, я не против
|
|||
84
maxab72
12.07.24
✎
09:30
|
(81) которое в некоторых учебниках, например у Сендова, именуют нуль-множеством.
Кроме того площадь величина не только скаляряная, она имеет знак в зависимости от направления обхода контура... а в некоторых задачах она вообще становится вектором. но все эти мраки я уже успешно из головы выкинул. |
|||
85
Волшебник
12.07.24
✎
10:11
|
(83) Выполните запрос:
ВЫБРАТЬ 1 ГДЕ NULL Результат будет пустой, потому что условие ГДЕ всё отфильтровало. Запрос эквивалентен следующему: ВЫБРАТЬ 1 ГДЕ ЛОЖЬ Значит NULL равно ЛОЖЬ. |
|||
86
Valdis2007
12.07.24
✎
10:38
|
(78) Побуквоедствую тоже...
...Общность понятия «множество» дала возможность применять его в любой математической области, и практически вся математика использует язык теории множеств. Однако самому Кантору шаг обобщения дался трудно, и его идеи были встречены современниками по-разному.... |
|||
87
Valdis2007
12.07.24
✎
10:42
|
(78) Вам возможно как и Кантору процесс обобщения дается ...несколько трудно...
|
|||
88
maxab72
12.07.24
✎
10:51
|
(87) а я вообще не заморачиваюсь, и не занимаюсь обобщениями. Мне хватает того, что я про NULL узнал на теории баз данных, что при расчете среднего NULL, в отличии от 0 не учитывается. Т.е. среднее арифметическое массива {2, 0} = 1, а {2, NULL} = 2. Остальное выводится логически из этой аксиомы.
|
|||
89
Ненавижу 1С
12.07.24
✎
11:12
|
(85) Так это не работает. Ведь 2*2=4 и (-2)*(-2)=4 - из этого не следует равенство 2 и -2.
|
|||
90
maxab72
12.07.24
✎
11:23
|
ВЫБРАТЬ
ВЫБОР КОГДА NULL = ЛОЖЬ = ИСТИНА ТОГДА "Истина" ИНАЧЕ "Ложь" КОНЕЦ КАК Ответ1, ВЫБОР КОГДА NULL = ЛОЖЬ = ЛОЖЬ ТОГДА "Ложь" ИНАЧЕ "Истина" КОНЕЦ КАК Ответ2, ВЫБОР КОГДА NULL <> ЛОЖЬ = ИСТИНА ТОГДА "Истина" ИНАЧЕ "Ложь" КОНЕЦ КАК Ответ3, ВЫБОР КОГДА NULL <> ЛОЖЬ = ЛОЖЬ ТОГДА "Ложь" ИНАЧЕ "Истина" КОНЕЦ КАК Ответ4 Ответы: Ответ 1 - Ложь, т.е. NULL не равен Ложь Ответ 2 - Истина т.е. NULL не равен Ложь Ответ 3 - Ложь, т.е. NULL равен Ложь Ответ 4 - Истина т.е. NULL равен Ложь |
|||
91
Волшебник
12.07.24
✎
11:28
|
(89) Равенство не следует, но эквивалентность этих уравнений очевидна, а значит можно делать (осторожные) выводы относительно функции.
Например, если f(2)=4 и f(-2)=4, то можно предположить содержимое функции: f(n) => n*n; Аналогично, где-то в недрах 1С есть функция, которая в ответ на NULL возвращает ЛОЖЬ, то есть: Секретная_Функция_Условие_ГДЕ_в_языке_запросов_1С(поле) { return ?(поле IS NULL, ЛОЖЬ, поле) } |
|||
92
Ненавижу 1С
12.07.24
✎
11:29
|
(90) у вас только две ветки при троичной логике это неверно:
ВЫБОР КОГДА NULL <> ЛОЖЬ = ЛОЖЬ ТОГДА "Ложь" КОГДА NULL <> ЛОЖЬ = ИСТИНА ТОГДА "Истина" ИНАЧЕ "NULL" КОНЕЦ |
|||
93
Ненавижу 1С
12.07.24
✎
11:33
|
(91) никакой "секретной" функции нет, просто булевы предикаты сравниваются с ИСТИНА и в данном случае результаты безусловны совпадают
как вам такое, Илон Маск? ВЫБРАТЬ ЛОЖЬ = NULL КАК Флаг ПОМЕСТИТЬ Т ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Т.Флаг КАК Флаг ИЗ Т КАК Т ГДЕ Т.Флаг ЕСТЬ NULL |
|||
94
Волшебник
12.07.24
✎
11:34
|
(93) Вы неправильно используете NULL. Не умеете его готовить
|
|||
95
Ненавижу 1С
12.07.24
✎
11:34
|
(94) это обычно пишут, когда аргументов нет
|
|||
96
Волшебник
12.07.24
✎
11:51
|
(95) Вот просвещайтесь
|
|||
97
Eiffil123
12.07.24
✎
12:01
|
(88) т.е. среднее от NULL вполне сработает?
upd да, работает. не учитывается при рассчете среднего. забавно |
|||
98
Ненавижу 1С
12.07.24
✎
11:56
|
(96) я это и так знал без 1С. Это написано всюду в SQL.
Только это доказывает, что результат NULL. |
|||
99
Волшебник
12.07.24
✎
11:58
|
(97) легко
ВЫБРАТЬ 1 КАК П ПОМЕСТИТЬ Числа ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ NULL; ВЫБРАТЬ СРЕДНЕЕ(П) ИЗ Числа Результат 1,5 |
|||
100
Волшебник
12.07.24
✎
11:58
|
(98) При чём тут SQL? Да, батенька, Вы совсем поплыли...
|
|||
101
Ненавижу 1С
12.07.24
✎
12:05
|
(100) аргументов по прежнему нет. Я про высказывание "в языке запросов 1С значение NULL дополнительно преобразуется в ЛОЖЬ"
|
|||
102
maxab72
12.07.24
✎
12:21
|
(92) "у вас только две ветки при троичной логике это неверно"
Чепуха. Нет тут никакой троичной логики. Если бы была, то чему было бы равно НЕ NULL? Если оно равно ИСТИНА, тогда НЕ НЕ NULL будет равно ЛОЖЬ, а должно быть равно, в силу обратимости операции отрицания, NULL. Так и запишем, в логику не умеет. |
|||
103
Ненавижу 1С
12.07.24
✎
12:25
|
(102) не null дает null
|
|||
104
JanK
12.07.24
✎
12:31
|
(85) Там второго эксперимента не хватает, который докажет что NULL это не ложь. Но если использовать как конечный предикат будет эквивалентен ложь (и null семантику не в 1c, конечно, придумали).
Второй эксперимент такой: ВЫБРАТЬ 1 ГДЕ НЕ NULL P.S. Я как-то для себя таблицы истинности в троичной логике выписывал, вот они (за форматирование прошу сильно не пинать): Таблица истинности для А Или Б Истина Ложь Null Истина Истина Истина Истина Ложь Истина Ложь Null Null Истина Null Null Таблица истинности для А И Б Истина Ложь Null Истина Истина Ложь Null Ложь Ложь Ложь Ложь Null Null Ложь Null |
|||
105
maxab72
12.07.24
✎
12:30
|
(103) тогда не имеет смысла проверка IS NULL, потому что null = not null.
|
|||
106
Ненавижу 1С
12.07.24
✎
12:36
|
(105) неправда. Сравнение с null дает null
|
|||
107
Eiffil123
12.07.24
✎
12:53
|
(104) как хорошо что в 1С:Предприятие.Элемент нет пустых ссылок, вместо них только Null. Столько чудесного будет ))
|
|||
108
Ненавижу 1С
12.07.24
✎
13:05
|
(107) одумались что-ли?
|
|||
109
JanK
12.07.24
✎
13:07
|
(107) Это не так.
В элементе вместо пустых ссылок используется Неопределено (которое по сути соответствует null'у из java и т.п. и не соответствует СУБД NULL'у). СУБД NULL'ы в элементе в пользовательских таблицах вообще отсутствует. |
|||
110
JanK
12.07.24
✎
13:10
|
(108) Нет. Не одумались. Ну или частично.
Всё равно осталось и Неопределено (занимающее место null) и СУБД NULL (пустые ссылки убрали, да). Конечно с определённых ракурсов идея их прировнять выглядит привлекательно, но это только если забыть про null семантику. А если не забывать - то совсем не привлекательно. Ведь большая часть |
|||
111
Chai Nic
12.07.24
✎
13:23
|
Хорошо что в 1с8 есть ЗначениеЗаполнено() или в семерке есть ПустоеЗначение(), которое выдает вполне конкретный ответ, независимо от философской категории пустоты.
|
|||
112
Ненавижу 1С
12.07.24
✎
13:28
|
(110) Если разработчики в 1С не знают про NULL - это печально
|
|||
113
VS-1976
12.07.24
✎
13:57
|
(96) Истина Или Null это результат оптимизации. Система считает что раз первое выражение истана и присутствует или, тогда второе условие проверять не нужно. истина или ложь = истина всегда. 11111111 or 00000000 = 11111111
|
|||
114
VS-1976
12.07.24
✎
13:55
|
(101) приведите пример преобразования, скорее всего это результат оптимизации вычисления не более того.
|
|||
115
Ненавижу 1С
12.07.24
✎
13:56
|
(114) я уже привёл два примера, показывающих, что в результате сравнения получается null
|
|||
116
Valdis2007
12.07.24
✎
14:03
|
(110) Конечно с определённых ракурсов идея их прировнять выглядит привлекательно...
это только на первый взгляд... NULL это вынужденный компромис в реляционной теории в отношении, содержащим кортежы, количество атрибутов кортежа всегда дожно быть одинаковое...сответственно где-то появляются nullы естественно это по смысло не неопределено , пустая ссылка итд итп |
|||
117
bolder
12.07.24
✎
22:33
|
(0) Не зачет!
|
Форум | Правила | Описание | Реклама | Секции | Поиск | Книга знаний | Вики-миста |