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) RSS

    • Может автор функции проверяет существуют ли только символы относящиеся числам: 0-9 и '.' ?
      Но ведь вместо '.' может быть и ',' :-) при соотвествующей кодировке.
      Ответить
    • че-то похожее уже было, нет?
      Ответить
    • Боян.
      Ответить
    • Похожего -- масса, именно такого -- нет. Так что боян, или нет -- вопрос весьма непростой -- смотря с какой стороны посмотреть.
      Ответить

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