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

    −858

    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
    create function is_numeric (
    	@a varchar(100)
    ) returns int as begin
    	declare @retval int
    	set @a = replace(@a, '0', '')
    	set @a = replace(@a, '1', '')
    	set @a = replace(@a, '2', '')
    	set @a = replace(@a, '3', '')
    	set @a = replace(@a, '4', '')
    	set @a = replace(@a, '5', '')
    	set @a = replace(@a, '6', '')
    	set @a = replace(@a, '7', '')
    	set @a = replace(@a, '8', '')
    	set @a = replace(@a, '9', '')
    	set @a = replace(@a, '.', '')
    	if len(rtrim(ltrim(@a))) > 0 set @retval = 0
    	else set @retval = 1
    	return @retval
    end

    Вот такая хитрая скалярная функция была найдена в недрах сопровождаемой системы. Согласно ей "...42...42..." -- это число, такие дела.

    Zebr, 01 Декабря 2010

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

    −178

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    if <fr_Pipeline1."OPERNAME"> = 'Тупаков Н.В.' then Memo50.Text:='Телефон: 350-24-53';
    if <fr_Pipeline1."OPERNAME"> = 'Абрамовна Мария Н.' then Memo50.Text:='Телефон: 531-39-86';
    if <fr_Pipeline1."OPERNAME"> = 'Кошкина Р.Ф.' then Memo50.Text:='Телефон: 170-83-28'; 
    if <fr_Pipeline1."OPERNAME"> = 'Шабанов Д.Л.' then Memo50.Text:='Телефон: 981-04-61';
    if <fr_Pipeline1."OPERNAME"> = 'Ирискина Рита Н.' then Memo50.Text:='Телефон: 330-58-55';
    if <fr_Pipeline1."OPERNAME"> = 'Бъенсе Н.Б.' then Memo50.Text:='Телефон: 761-77-93'; 
    if <fr_Pipeline1."OPERNAME"> = 'Батрудинова О.П.' then Memo50.Text:='Телефон: 580-55-42';
    if <fr_Pipeline1."OPERNAME"> = 'Кудина Д.М.' then Memo50.Text:='Телефон: 440-61-62';

    Повторение мать учения :))

    Vasbin, 30 Ноября 2010

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

    −859

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    CREATE Procedure [dbo].[usp_InsertFleets]
    @SSQL text
    As
          EXEC(@SSQL)
    GO

    Минутка индусского кода

    bas1l, 25 Ноября 2010

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

    −857

    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
    -- Возвращает название месяца по русский
       FUNCTION fmonstr (pmon IN VARCHAR2)
          RETURN CHAR
       IS
          TYPE tmon IS TABLE OF VARCHAR2 (60)
             INDEX BY BINARY_INTEGER;
    
          amon   tmon;
       BEGIN
          amon (1) := 'ЯНВАРЬ';
          amon (2) := 'ФЕВРАЛЬ';
          amon (3) := 'МАРТ';
          amon (4) := 'АПРЕЛЬ';
          amon (5) := 'МАЙ';
          amon (6) := 'ИЮНЬ';
          amon (7) := 'ИЮЛЬ';
          amon (8) := 'АВГУСТ';
          amon (9) := 'СЕНТЯБРЬ';
          amon (10) := 'ОКТЯБРЬ';
          amon (11) := 'НОЯБРЬ';
          amon (12) := 'ДЕКАБРЬ';
          RETURN amon (TO_NUMBER (pmon));
          NULL;
       END;                                                        --  End fMonStr

    о наличие nls_date_language=russian и to_char() видимо не догадывались

    itaho, 24 Ноября 2010

    Комментарии (12)
  5. 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)
  6. SQL / Говнокод #4667

    −856

    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
    44. 44
    create   Function [dbo].[BuildString](	@a char(1),
    			       	@b char(1),
    			       	@c char(2),
    			       	@d char(2),
    			       	@e char(1),
    				@f char(1),
    			       	@g char(1),
    			       	@h char(2),
    			       	@i char(2),
    			       	@j char(1),
    				@k char(2),
    			       	@l char(1),
    				@m char(2),
    			       	@n char(1),
    				@o char(1),
    			       	@p char(1),
    			       	@q char(2),
    			       	@r char(2),
    				@s char(1),
    			       	@t char(1),
    				@u char(1),
    			       	@v char(1),
    			       	@w char(2),
    			       	@x char(2),
    			       	@y char(2),
    			       	@z char(1),
    				@a0 char(1),
    			       	@a1 char(1),
    			       	@a2 char(2),
    			       	@a3 char(2),
    				@a4 char(4))
    returns char(47)
    as
    begin
    
    declare @text char(47)
    
    set @text = @a+@b+@c+@d+@e+@f+@g+
    		@h+@i+@j+@k+@l+@m+@n+
    		@o+@p+@q+@r+@s+@t+@u +
    		@v+@w+@x+@y+@z+
    		@a0+@a1+@a2+@a3+@a4
    
    return @text

    Автор наверное что-то хотел этим сказать. Я так и не понял :)

    adler, 17 Ноября 2010

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

    −120

    1. 1
    2. 2
    3. 3
    4. 4
    t = SQLEXEC(cc,"INSERT INTO CARDS (N, NAME1, NAME2, NAME3, PDEPARTMENT, PPOST, DCREATE, DMODIFY, PFIRM, PGROUP);
                       VALUES( '"+ALLTRIM('65905')+"', '"+UPPER('Ивасик')+"', '"+UPPER('Иван')+"', '"+UPPER('Андреевич')+"',;
                       '"+ALLTRIM('565')+"', '"+ALLTRIM('2184800')+"', '"+ALLTRIM('24/06/2009')+"', '"+ALLTRIM('07/07/2009')+"',;
                       '"+ALLTRIM('5')+"','"+ALLTRIM('5')+"')")

    Пример залива данных в базу на Visual FoxPro

    gavno2000, 17 Ноября 2010

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

    −122

    1. 1
    2. 2
    ALTER TABLE [dbo].[IssueGroup]  WITH CHECK ADD  CONSTRAINT [FK_IssueGroup_Group] FOREIGN KEY([ProjectId], [GroupId])
    REFERENCES [dbo].[Group] ([GroupId],[ProjectId])

    Часа 2 искал проблему в чужом коде - оказалось, что просто поля ProjectId и GroupId были записаны в разных порядках сначала FOREIGN KEY([ProjectId], [GroupId]), а потом REFERENCES [dbo].[Group] ([GroupId],[ProjectId]).

    vadimliman, 16 Ноября 2010

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

    −117

    1. 1
    SELECT * FROM CompanyData d WHERE d.Name = @companyName AND d.EntityID NOT IN (SELECT COUNT(*) FROM...)

    Оригинал потерялся, но особый способ отсевания компаний запомнился. Хорошо, что COUNT(*) возвращал всегда ноль :)

    AlexKhomich, 16 Ноября 2010

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

    −125

    1. 1
    SELECT rr.hit, count(rr.hit) AS cnt FROM `r_hits` AS rr WHERE rr.hit IN (SELECT DISTINCT rh.hit FROM `r_hits`AS rh) GROUP BY rr.hit;

    Вот что бывает, когда голова не работает в обед в понедельник.
    А делов-то всего на select hit, COUNT(id) from r_hit group by hit было...

    azzz, 15 Ноября 2010

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