Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Сравнение с Null
|
|||
|---|---|---|---|
|
#18+
Нет, я знаю, что любое сравнение на равенство с Null, даже Null=Null - ложно. НО! НЕ равенство ложно тоже! Может быть, для кого-то это не является открытием. Я только что обнаружил и упал в обморок. Привожу примеры, которые можете прокрутить в QA - возможно, некоторые из вас, как я, поспешат исправлять тексты триггеров и хранимых процедур. Итак. if 1=Null print 'Истина' else print 'Ложь' Результат: Ложь (пока все нормально) if not (1=Null) print 'Истина' else print 'Ложь' Результат: Ложь (!!!) if 1!=Null print 'Истина' else print 'Ложь' Результат: Ложь () if not (1!=Null) print 'Истина' else print 'Ложь' Результат: Ложь ( ) Могу поклясться, что хотя бы один читатель данного форума тоже упал в обморок и в таком состоянии полез в свой код исправлять ошибки в логике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2001, 13:44 |
|
||
|
Сравнение с Null
|
|||
|---|---|---|---|
|
#18+
Ха ха я тоже как то попался, правда я тогда уставший был Надо так: if 1 is Null print 'Истина' else print 'Ложь' Результат: Ложь (пока все нормально) if 1 is not Null) print 'Истина' else print 'Ложь' Результат: Ложь (!!!) Ну и так далее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2001, 13:54 |
|
||
|
Сравнение с Null
|
|||
|---|---|---|---|
|
#18+
А я попался на другой ситуации. Есть переменная типа Bit. Она может принимать всего три значения: 0, 1 и Null. Когда она равна 1, логика программы одна, когда 0 или Null - другая. Я и пишу в лоб: if @SomeBit!=1 ... или так: if not (@SomeBit=1) ... И получаю, что когда @SomeBit равен Null, то Null=1! Можно просто в осадок выпасть! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2001, 14:07 |
|
||
|
Сравнение с Null
|
|||
|---|---|---|---|
|
#18+
Это всё старо как мир, ISNULL вам поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2001, 14:15 |
|
||
|
Сравнение с Null
|
|||
|---|---|---|---|
|
#18+
А у меня всё нормально... if 1 is Null print 'Истина' else print 'Ложь' Результат: Ложь if 1 is not Null print 'Истина' else print 'Ложь' Результат: Истина ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2001, 14:29 |
|
||
|
Сравнение с Null
|
|||
|---|---|---|---|
|
#18+
Ну вы даете, ребята! В любой книжке, хелпе и т.д. громадными буквами в самом начале пишется - любая операция с участием операнда со значением NULL дает NULL. Любая! Сравнение равно/не равно, арифметические функции и т.д. - все даст NULL. %-)))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2001, 15:14 |
|
||
|
Сравнение с Null
|
|||
|---|---|---|---|
|
#18+
>Любая! Сравнение равно/не равно, арифметические функции и т.д. - все даст NULL. Да ладно Вам в самом деле а если не равно возвращается true а уж никак не null. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2001, 09:23 |
|
||
|
Сравнение с Null
|
|||
|---|---|---|---|
|
#18+
2 Garya Да не надо выпадать в осадок мне прям весело, сорри на этом сайте даже статья есть на тему трехзначной логики, все достаточно ясно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2001, 09:26 |
|
||
|
Сравнение с Null
|
|||
|---|---|---|---|
|
#18+
2 Genady: select 1 <> null дает NULL, а никак не true ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2001, 07:09 |
|
||
|
Сравнение с Null
|
|||
|---|---|---|---|
|
#18+
2 GreenSunrise select 1 <> null вернет "Server: Msg 170, Level 15, State 1, Line 1 Line 1: Incorrect syntax near '<'." True вернется на неравнество в том случае, если я сравниваю нечто (например значение переменной) с Null и при этом хочу выяснить не является ли значение переменной Null. В общем то я неправ, потому что спутал операции. Сорри, в оправдание вот ссылка, по которой можно прочесть статью на эту тему. http://www.akzhan.midi.ru/devcorner/articles/DDP-Representation-of-an-absent-information-rus.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2001, 07:34 |
|
||
|
Сравнение с Null
|
|||
|---|---|---|---|
|
#18+
Ну не придирайтесь к примеру так буквально. Хорошо, хорошо, синтаксис неправильный, не спорю. Мне просто хотелось показать, что операция "не равно", если хотя бы один из операндов NULL, возвращает NULL. Вот более рабочий пример declare @i int set @i = 1 if @i <> 1 print 'not equal' else print 'equal' Напечатает, ясный пень, equal. Если в этом примере закомментарить строчку set @i = 1 или заменить ее на set @i = null для бОльшей наглядности, то на печать выведется опять-таки equal. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2001, 07:55 |
|
||
|
Сравнение с Null
|
|||
|---|---|---|---|
|
#18+
2 GreenSunrise Ну ладно, ладно сглупил я Немного неправильно понял Ваше утверждение, мне почему то показалось что Вы утверждаете что невозможно определить является ли значение Null-ом Перегрелся наверное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2001, 08:14 |
|
||
|
Сравнение с Null
|
|||
|---|---|---|---|
|
#18+
Вообще-то сравнение с NULL дает значение UNKNOWN, если верить BOL, а это, ясен пень, не True и не False ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2001, 14:53 |
|
||
|
Сравнение с Null
|
|||
|---|---|---|---|
|
#18+
Вообще-то NULL=NULL может быть true, если установлено Set ANSI_NULLS off ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2001, 16:01 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32010091&tid=1826056]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 262ms |
| total: | 388ms |

| 0 / 0 |
