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

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    ALTER TABLE info ADD COLUMN temp date;
    UPDATE info SET temp=b_date;
    ALTER TABLE info DROP COLUMN b_date;
    ALTER TABLE info RENAME COLUMN temp TO b_date;

    это чтоб b_date было в конце...

    pl7ofit, 27 Марта 2016

    Комментарии (0)
  2. SQL / Говнокод #19671

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    if regexp_instr( str, '00' ) = 1  then
    ...
    end if;
    ......
    if  length( str ) = 5 and not regexp_like( str, '[^0]') then
    ......
    end if;

    kocmoc, 22 Марта 2016

    Комментарии (2)
  3. SQL / Говнокод #19649

    +2

    1. 1
    if  res > 0 or res < 0 then  raise   err_code_2; end if;

    PL/SQL, кусок хранимой процедуры в БД очень крупного оператора связи.

    Shadowbearer, 17 Марта 2016

    Комментарии (19)
  4. SQL / Говнокод #19647

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    SELECT DISTINCT pr_zak   INTO v_prizn
    FROM ceh_in.book_inp
    WHERE zakaz_wsp = v_zak
    AND uz = v_uz
    AND nws = v_nws
    AND pr_zak = p_pr;

    угадайте, что тут не так?

    hovak, 17 Марта 2016

    Комментарии (8)
  5. SQL / Говнокод #19536

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Часть структуры:
    create_date varchar(20) utf8_general_ci
    off_date      varchar(20) utf8_general_ci
    Выборка:
    source_id, service_id,                name,                       description,         create_date, off_date, default, active, order
                0,              6,  Без источника,  Источник по умолчанию, 20130807133236,           '',         1,        1,       0

    Бльоооооооо!!!!!!

    deep, 26 Февраля 2016

    Комментарии (2)
  6. SQL / Говнокод #19436

    +4

    1. 1
    2. 2
    select street, number, name,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(phones, '?', ''),'+7','8'),')',''),'(',''),' ','') as phone
    from person

    Есть еще варианты? )

    indigogodman, 12 Февраля 2016

    Комментарии (21)
  7. SQL / Говнокод #19428

    −2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    DECLARE @a int;
    Set @a =0;
    
    SELECT a,b,
    
    @a = CASE b
    WHEN '2m' THEN 60
    WHEN '1m' THEN 30
    WHEN '15d' THEN 15
    END
    FROM table1
    
    Where b<= dateadd (day,@a,getdate());

    Подскажите пожалуйста:

    Есть 2 столбца "a" и "b"

    Столбец "a" содержит строковое значение (2m,1m,15d(60 дней, 30 дней, 15 дней))

    Столбец "b" содержит дату

    Необходимо к столбцу "b" прибавить столбец "a" и получить дату(например стобец "b" содержит дату 01.01.2016, а стобец "a" содержит "15d" должно получиться 16.01.2016), но я совсем запутался с кодом.

    dernar, 10 Февраля 2016

    Комментарии (39)
  8. SQL / Говнокод #19415

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    select 
       (select name from dbo.Product where ID = @id) as name, 
       (select sh_name from dbo.Product where ID = @id) as sh_name, 
       (select type from dbo.Product where ID = @id) as type,
       (select description from dbo.Product where ID = @id) as description, 
       (select count(*) from dbo.ProductSales ps join  dbo.Product p on p.ID=ps.ID_PRODUCT where ID = @id) as product_sales
    ..............
    и т.д.
    думаю смысл понятен)

    Офигенный способ выбора данных из таблиц(ы). Да-да Sql бывает и таким :)

    Onimys, 08 Февраля 2016

    Комментарии (4)
  9. SQL / Говнокод #19369

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    update t set
    t.[TYPE] = @type
    from dbo.ITEM t
    where @id = t.ID
    
    update t set
    t.NAME = @name
    from dbo.ITEM t
    where @id = t.ID
    
    update t set
    q.CATEGORY = @category
    from dbo.ITEM t
    where @id = t.ID
    
    update t set
    t.[COUNT] = @count
    from dbo.ITEM t
    where @id = t.ID
    
    update t set
    t.SUMMA = @summa_cost
    from dbo.ITEM t
    where @id = t.ID
    
    ...
    и так далее полотно для 40 полей)))

    Представляю Вам ХП по обновлению полей таблицы. Вот это реализация =)

    Onimys, 29 Января 2016

    Комментарии (6)
  10. SQL / Говнокод #19360

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    select row_idx.row,row_idx.row_name,
           sum(
           case
              when exists(select R_USERS_DOLGN.ID_REC
                          from R_USERS_DOLGN
                          where R_USERS_DOLGN.USER_ID = USERS.ID_USER) then 1
              else 0
            end) SHTAT,
    ---и так далее---
    ---...---
            sum(
            case
              when exists(select R_USERS_DOLGN.ID_REC
                              from R_USERS_DOLGN
                              where R_USERS_DOLGN.USER_ID = USERS.ID_USER) and TAB_PLACE.TYPE_PLACE in (2, 3) then 1
              else 0
            end) STACZAN_v from USERS
     left outer join R_USERS_DOLGN on R_USERS_DOLGN.user_id = USERS.id_user
     left outer join SPR_DOLGN on  SPR_DOLGN.ID_DOLGN=R_USERS_DOLGN.DOLGN_ID  and
           R_USERS_DOLGN.LPID = USERS.LPID and 
           R_USERS_DOLGN.BEG_WORK <= :O_BEG and 
           R_USERS_DOLGN.END_WORK >= :O_END 
     join TAB_PRVD on TAB_PRVD.ID_PRVD= SPR_DOLGN.PRVD_ID
     right outer join (select 1 row,'Врачи – всего' row_name from rdb$database 
           union select 2 row,'Специалисты с высшим немедицинским образованием (т.1100 стр.122)' row_name from rdb$database
           union select 3 row,'Средний медперсонал – всего (т.1100 стр.128)' row_name from rdb$database
           union select 4 row,'Провизоры (т.1100 стр.175)' row_name from rdb$database
           union select 5 row,'Фармацевты (т.1100 стр.176)' row_name from rdb$database
           union select 6 row,'Младший медперсонал (т.1100 стр.177)' row_name from rdb$database
           union select 7 row,'Прочий персонал (т.1100 стр.179)' row_name from rdb$database
           union select 8 row,'Всего должностей (т.1100 стр.184)' row_name from rdb$database) row_idx
       on     (row_idx.row=1 and (spr_dolgn.group_dolgn=1))
           or (row_idx.row=2 and ', '||(select first (1) spec_list 
                   from spr_mkb_group_tabl_spec where num_pp=122)||',' like '%, '||tab_prvd.id_prvd||',%')
           or (row_idx.row=3 and (spr_dolgn.group_dolgn=2))
           or (row_idx.row=4 and (tab_prvd.id_prvd in (3,6,111,112,5003,5004,5005)))
           or (row_idx.row=5 and (spr_dolgn.id_dolgn=307))
           or (row_idx.row=6 and (spr_dolgn.group_dolgn=3))
           or (row_idx.row=7 and (spr_dolgn.group_dolgn=4))
           or (row_idx.row=8)
     left outer join TAB_PLACE on TAB_PLACE.ID_PLACE = R_USERS_DOLGN.PODR_ID
     where USERS.LPID = '+inttostr(LPU_CURRENT_ID)+
            ' group by 1,2

    Что-то меня накрыло. Вообще-то для таких вещей у нас тут есть отдельная таблица. В крайнем случае можно было сделать временную таблицу.

    tucvbif, 28 Января 2016

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