Конференция "Прочее" » Отождествление пустой строки и NULL
 
  • pasha_golub © (01.07.08 15:07) [0]
    Помню была такая тема. Почти что "святая война". Но тут столкнулся с проблемой, что пользователь упорно мне доказывает целесообразность данного момента в моих компонентах-наследниках TDataset.

    Я стою на своем, что это разные сущности абсолютно. А он предлагает компромисс - ввести флаг и по желанию программиста, чтобы работало то так, а то эдак.

    Самое плохое, что привел примеры програм, которые так и поступают. Например, pgAdminIII, DOA для Oracle, IBX для Interbase/Firebird...

    Каковы мысли? Я понимаю, что это супротив стандарта. Но если рынок требует, может стоит?
  • Ega23 © (01.07.08 15:10) [1]
    Если сильно настаивает и готов за это дело заплатить - то пуркуа бы и не па?
  • pasha_golub © (01.07.08 15:12) [2]

    > Ega23 ©   (01.07.08 15:10) [1]

    А совесть куда деть? :)) Меня от одной мысли коробит. У меня ж отец военный. Не положено по уставу.
  • McSimm © (01.07.08 15:13) [3]

    > А совесть куда деть?

    отдельной строкой в смете :)
  • pasha_golub © (01.07.08 15:18) [4]
    Тут ведь еще какой момент NULL <> NULL, а '' = ''. Ну и прочие вкусности. В том же запросе WHERE .. IS NULL супротив WHERE ... = ''

    Опять же, если это так востребовано почему это не реализовано в серверной логике? Даже параметра такого нету.
  • Игорь Шевченко © (01.07.08 15:19) [5]

    > Отождествление пустой строки и NULL


    У меня к тебе вопрос - а как ты их визуально различишь ?
  • Ega23 © (01.07.08 15:20) [6]
    Подожди. Речь о том, чтобы НА СЕРВЕРЕ подменить Null на ''? Или всё-таки на клиенте?
  • Правильный-Вася (01.07.08 15:29) [7]

    >  а как ты их визуально различишь ?

    а зачем? визуал - это последнее из применений
    а остальные - сплошь автоматы
    и геморроиться в проверкой нуллов, если мне это не надо, не хочется
  • Ega23 © (01.07.08 15:32) [8]
    Я не вижу ничего дурного в том, что если у тебя ftString - то при Null-значении показывать '', если ftInteger - то 0 и т.п.
    На крайняк - ввести макроподстановку в свойство филда, типа при Null-значении писать '' или "Пусто" или "NULL".
    Но - только для отображения.
  • Игорь Шевченко © (01.07.08 15:34) [9]
    Мало того, что я не понимаю, каков фактический смысл отличия "" от NULL с точки зрения предметной области, я еще и не понимаю, как их визуально отличать. Например, как отличать 0 от NULL я знаю, а вот со строками - тупик.
  • Плохиш © (01.07.08 15:34) [10]

    > pasha_golub ©   (01.07.08 15:07)  
    > Помню была такая тема. Почти что "святая война". Но тут
    > столкнулся с проблемой, что пользователь упорно мне доказывает
    > целесообразность данного момента в моих компонентах-наследниках
    > TDataset.

    Хм, а свойству asString как-то пофигу, что там null или строка нулевой длины...
  • pasha_golub © (01.07.08 15:39) [11]

    > Игорь Шевченко ©   (01.07.08 15:34) [9]


    > Мало того, что я не понимаю, каков фактический смысл отличия
    > "" от NULL с точки зрения предметной области, я еще и не
    > понимаю, как их визуально отличать.

    Визуальность - дело последнее. Например, пустая строка это нейтральный элемент относительно операции конкатенации, как и 0 в случае сложения. Однако, если сделать 'string' || NULL, то получаем NULL.

    Визуально, конечно, да. Пользователю один черт что пустое место, что надпись NULL
  • Ega23 © (01.07.08 15:40) [12]

    > Хм, а свойству asString как-то пофигу, что там null или
    > строка нулевой длины...
    >


    И чё? TField.GetAsString : string; virtual;
    Как хошь перекрыть можно.
  • pasha_golub © (01.07.08 15:41) [13]

    > Я не вижу ничего дурного в том, что если у тебя ftString
    > - то при Null-значении показывать '', если ftInteger - то
    > 0 и т.п.

    Со строками еще куда ни шло, а вот с числами... Поле Зарплата, например, то ли NULL - неизвестно или не начислено, или 0. :-)
  • Игорь Шевченко © (01.07.08 15:42) [14]
    pasha_golub ©   (01.07.08 15:39) [11]


    > Визуальность - дело последнее. Например, пустая строка это
    > нейтральный элемент относительно операции конкатенации,
    > как и 0 в случае сложения. Однако, если сделать 'string'
    > || NULL, то получаем NULL.


    я@ora10> select 'Foo'||NULL from dual;

    'FO
    ---
    Foo

    я@ora10>

    Мне не верить своим глазам ?
  • Игорь Шевченко © (01.07.08 15:43) [15]

    > Поле Зарплата, например, то ли NULL - неизвестно или не
    > начислено,


    не определено.
  • Ega23 © (01.07.08 15:44) [16]
    Павель, вот никогда бы полю, отвечающему за деньги NULL бы не поставил. Ибо - Sum чему равно будет?  :)
  • oldman © (01.07.08 15:46) [17]

    > пользователь упорно мне доказывает целесообразность данного
    > момента


    КЛИЕНТ ВСЕГДА ПРАВ!!!
  • McSimm © (01.07.08 15:47) [18]

    > Ибо - Sum чему равно будет?

    Все правильно - пока все слагаемы не известны, суммировать опасно.
    А то получится 10 конфет каждому по 8 :)
  • Ega23 © (01.07.08 15:47) [19]

    > Мне не верить своим глазам ?


    MSSQL 2000

    Declare @x varchar(10), @y varchar(10)
    Set @x=null; Set @y='foo'
    Select @x + @y



                       
    --------------------
    NULL

    (1 row(s) affected)
 
Конференция "Прочее" » Отождествление пустой строки и NULL
Есть новые Нет новых   [134439   +39][b:0][p:0.001]