-
Помню была такая тема. Почти что "святая война". Но тут столкнулся с проблемой, что пользователь упорно мне доказывает целесообразность данного момента в моих компонентах-наследниках TDataset.
Я стою на своем, что это разные сущности абсолютно. А он предлагает компромисс - ввести флаг и по желанию программиста, чтобы работало то так, а то эдак.
Самое плохое, что привел примеры програм, которые так и поступают. Например, pgAdminIII, DOA для Oracle, IBX для Interbase/Firebird...
Каковы мысли? Я понимаю, что это супротив стандарта. Но если рынок требует, может стоит?
-
Если сильно настаивает и готов за это дело заплатить - то пуркуа бы и не па?
-
> Ega23 © (01.07.08 15:10) [1]
А совесть куда деть? :)) Меня от одной мысли коробит. У меня ж отец военный. Не положено по уставу.
-
> А совесть куда деть?
отдельной строкой в смете :)
-
Тут ведь еще какой момент NULL <> NULL, а '' = ''. Ну и прочие вкусности. В том же запросе WHERE .. IS NULL супротив WHERE ... = ''
Опять же, если это так востребовано почему это не реализовано в серверной логике? Даже параметра такого нету.
-
> Отождествление пустой строки и NULL
У меня к тебе вопрос - а как ты их визуально различишь ?
-
Подожди. Речь о том, чтобы НА СЕРВЕРЕ подменить Null на ''? Или всё-таки на клиенте?
-
> а как ты их визуально различишь ?
а зачем? визуал - это последнее из применений а остальные - сплошь автоматы и геморроиться в проверкой нуллов, если мне это не надо, не хочется
-
Я не вижу ничего дурного в том, что если у тебя ftString - то при Null-значении показывать '', если ftInteger - то 0 и т.п. На крайняк - ввести макроподстановку в свойство филда, типа при Null-значении писать '' или "Пусто" или "NULL". Но - только для отображения.
-
Мало того, что я не понимаю, каков фактический смысл отличия "" от NULL с точки зрения предметной области, я еще и не понимаю, как их визуально отличать. Например, как отличать 0 от NULL я знаю, а вот со строками - тупик.
-
> pasha_golub © (01.07.08 15:07) > Помню была такая тема. Почти что "святая война". Но тут > столкнулся с проблемой, что пользователь упорно мне доказывает > целесообразность данного момента в моих компонентах-наследниках > TDataset.
Хм, а свойству asString как-то пофигу, что там null или строка нулевой длины...
-
> Игорь Шевченко © (01.07.08 15:34) [9]
> Мало того, что я не понимаю, каков фактический смысл отличия > "" от NULL с точки зрения предметной области, я еще и не > понимаю, как их визуально отличать.
Визуальность - дело последнее. Например, пустая строка это нейтральный элемент относительно операции конкатенации, как и 0 в случае сложения. Однако, если сделать 'string' || NULL, то получаем NULL.
Визуально, конечно, да. Пользователю один черт что пустое место, что надпись NULL
-
> Хм, а свойству asString как-то пофигу, что там null или > строка нулевой длины... >
И чё? TField.GetAsString : string; virtual; Как хошь перекрыть можно.
-
> Я не вижу ничего дурного в том, что если у тебя ftString > - то при Null-значении показывать '', если ftInteger - то > 0 и т.п.
Со строками еще куда ни шло, а вот с числами... Поле Зарплата, например, то ли NULL - неизвестно или не начислено, или 0. :-)
-
pasha_golub © (01.07.08 15:39) [11]
> Визуальность - дело последнее. Например, пустая строка это > нейтральный элемент относительно операции конкатенации, > как и 0 в случае сложения. Однако, если сделать 'string' > || NULL, то получаем NULL.
я@ora10> select 'Foo'||NULL from dual;
'FO --- Foo
я@ora10>
Мне не верить своим глазам ?
-
> Поле Зарплата, например, то ли NULL - неизвестно или не > начислено,
не определено.
-
Павель, вот никогда бы полю, отвечающему за деньги NULL бы не поставил. Ибо - Sum чему равно будет? :)
-
> пользователь упорно мне доказывает целесообразность данного > момента
КЛИЕНТ ВСЕГДА ПРАВ!!!
-
> Ибо - Sum чему равно будет?
Все правильно - пока все слагаемы не известны, суммировать опасно. А то получится 10 конфет каждому по 8 :)
-
> Мне не верить своим глазам ?
MSSQL 2000
Declare @x varchar(10), @y varchar(10)
Set @x=null; Set @y='foo'
Select @x + @y -------------------- NULL (1 row(s) affected)
|