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

    −849

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    -- Очищаем поле [PlanItemCodeNorm] от всех записей содержащих не цифры и точку
    UPDATE PIM SET [PlanItemCodeNorm] = ''
    -- SELECT PIM.*
    FROM [dbo].[PlanItem] PIM
    WHERE [PlanItemCodeNorm] <> ''
        AND REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
            REPLACE([PlanItemCodeNorm], '.', '' )
            , '0', '' ), '1', '' ), '2', '' ), '3', '' ), '4', '' ), '5', '' ), '6', '' ), '7', '' ), '8', '' ), '9', ''), '*', '' )
            <> ''

    ....

    Запостил: HellMaster_HaiL, 23 Ноября 2010

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

    • А не говно-эквивалент можно?
      Ответить
      • [PlanItemCodeNorm] like '%[^0-9.*]%'
        как-то так наверно. но не проверял
        Ответить
        • regexplike, но не суть.
          если regexplike нету, то видимо, только такой способ.

          Это если функцию не писать.
          Ответить
    • код жутко смотрится, но при условии требования скорейшего покроя заплатки сойдет. и только для единичного случая.
      если только подобные конструкции расплодились массово, никаких оправданий не принимается, можно хотя бы юзер-функцию написать
      Ответить
      • думаю, что даже для единичного случая плохо, поскольку масштабируемость этих вложенных реплейсов стремится к нулю. для длинных строк + большой выборки + частых запросов ГК будет проблемой
        Ответить

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