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

    −47

    1. 1
    2. 2
    3. 3
    select ...
     NVL(DSAND || ', ', '')
    from ...

    сидел и дооолго смотрел, а вдруг сбудется?

    Запостил: OAS_GUEST, 20 Ноября 2015

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

    • а почему не должно сбываться?
      Ответить
      • Выражение DSAND || ', ' никогда не будет null, значит второе выражение никогда не сбудется.
        Ответить
        • то есть ANSI уже отменили?
          http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt
          2) If <concatenation> is specified, then let S1 and S2 be the result of the <character value expression> and <character factor>, espectively.
          Case:
          a) If either S1 or S2 is the null value, then the result of the <concatenation> is the null value.
          Ответить
          • в MS SQL и PostgreSQL - то таки да, а в Oracle - таки не. За других не знаю...
            Ответить
            • А в MySQL две палки - это вообще logic or...
              Ответить
              • А у женщин две палки - это вообще залет...
                Ответить
                • --У моей жены две полоски!!
                  --Она беременна?
                  --нет блядь, она бурундук!
                  Ответить
            • >За других не знаю...
              при чем тут другие? я не про других говорю, а про стандарты.
              по стандартам должно быть такое поведение, но oracle как всегда решил выебнуться по факту не так работает.
              в MS SQL по хорошему можно поставить CONCAT_NULL_YEILDS_NULL ON, и тогда он тоже будет при контатенации null воспринимать как пустую строку, но это говно же.
              null в RBMS это не пусто, а неизвестно, поэтому, при понтатенации известных выражений и хуй знает чего, мы получим хуй знает чего.
              Ответить
              • т.е. автор данного кода, глубоко проникшись противоречиями продуктов компании Оракл принятым международным стандартам, решил перестраховаться и добавить проверку на null value, в надежде и тревоге, что в последующих релизах Оракл всё-таки их соблюдёт и его код перестанет работать должным образом? ))
                Ответить
              • По стандартам нет функции NVL, и раз уж говнокодер начал использовать oracle-specific функции, то пусть не пытается сесть на оба стула сразу.

                >при понтатенации известных выражений и хуй знает чего, мы получим хуй знает чего
                Ехал коалеск через коалеск, видит коалеск в кэйс-вене коалеск, сунул коалеск decode в коалеск, коалеск, коалеск, кейс-вен, коалеск...
                Лучше расскажи, как часто требует вот это вот дерьмо:
                > null в RBMS это не пусто, а неизвестно
                Ответить
    • чем нвл от питушка коалеска отличается?
      Ответить

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