1. SQL / Говнокод #11818

    −168

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    AC varchar(6),
        PC varchar(12),
        KT varchar(15),
        AD varchar(10),
        DV varchar(10)
    ...
    if (kt ='               ' or kt ='') then kt=null; /* 15 пробелов */
    if (pc='' or pc='            ') then pc= null; /* 12 пробелов */
    if (ac='' or ac='      ') then ac= null; /* 6 пробелов */
    if (ad ='               ') then ad=null;  if (ad ='') then ad=null; /* 15 пробелов */

    Очень хитрая магия..

    Запостил: N21, 21 Сентября 2012

    Комментарии (6) RSS

    • Что-то типа s.Trim() == "" ? (если, конечно, кому-нибдуь не нужна ситуация, когда там другое количество пробелова)
      Ответить
      • Есть TRIM(), но он появился только в Firebird 2.0, а это база от 0.9-го. Но во внешней библиотеке, подключенной к БД, есть подобная функция. Причины мне, увы, неизвестны, т.к. досталось от предшественника без какой-либо технической документации.
        Ответить
        • Иногда бывает проще базу подвинуть, чем жить так. Хотя у знакомого из-за миграции слетело резервирование как-то, я не вдавался в вопрос, но охотно верю.
          Вообще, с моей скромной позиции, фиребирд не нужен довольно в узких кругах задач, я сам облизываюсь на постгрес, но всё руки не доходят.
          Ответить
          • Я бы с радостью все снес и начал с чистого листа, ибо в том, с чем приходится работать нет ни нормальной архитектуры, ни документации, ни какого-либо планирования. Но т.к. ситуация как в анекдоте про обезьян в клетке и банан на потолке, приходится превозмогать.
            Ответить
            • Это беда повзрослевших проектов. У меня таких было, но выкинуть и начать заново оказалось проще и дешевше.
              Ответить
              • Проблема лишь в том, как убедить в этом остальную часть команды :]
                Ответить

    Добавить комментарий