[COLOR=blue]alter[/color] [COLOR=#FF00FF]function[/color] SplitFraction(@t [COLOR=blue]varchar[/color](100))
returns [COLOR=blue]numeric[/color](20,10)
[COLOR=blue]as[/color]
[COLOR=blue]begin[/color]
[COLOR=blue]declare[/color] @w [COLOR=blue]numeric[/color](20, 10), @n [COLOR=blue]numeric[/color](20, 10), @d [COLOR=blue]numeric[/color](20,10)
[COLOR=blue]if[/color] len(@t) = 0
[COLOR=blue]begin[/color]
[COLOR=blue]select[/color] @w = 0
[COLOR=blue]select[/color] @n = 0
[COLOR=blue]select[/color] @d = 1
[COLOR=blue]end[/color]
[COLOR=blue]else[/color]
[COLOR=blue]begin[/color]
[COLOR=blue]select[/color] @w = [COLOR=blue]case[/color] [COLOR=blue]when[/color] [COLOR=#FF00FF]charindex[/color]([COLOR=red]' '[/color], @t) = 0 [COLOR=blue]then[/color]
[COLOR=#FF00FF]cast[/color](@t [COLOR=blue]as[/color] [COLOR=blue]numeric[/color](20,10)) [COLOR=blue]else[/color]
[COLOR=#FF00FF]cast[/color]([COLOR=#FF00FF]left[/color](@t, [COLOR=#FF00FF]charindex[/color]([COLOR=red]' '[/color], @t)-1) [COLOR=blue]as[/color] [COLOR=blue]numeric[/color](20,10)) [COLOR=blue]end[/color]
[COLOR=blue]select[/color] @n = [COLOR=blue]case[/color] [COLOR=blue]when[/color] [COLOR=#FF00FF]charindex[/color]([COLOR=red]' '[/color], @t) = 0 [COLOR=blue]then[/color]
0 [COLOR=blue]else[/color]
[COLOR=#FF00FF]cast[/color](
[COLOR=#FF00FF]left[/color](
[COLOR=#FF00FF]substring[/color](@t, [COLOR=#FF00FF]charindex[/color]([COLOR=red]' '[/color], @t) + 1
, len(@t))
, [COLOR=#FF00FF]charindex[/color]([COLOR=red]'/'[/color], [COLOR=#FF00FF]substring[/color](@t, [COLOR=#FF00FF]charindex[/color]([COLOR=red]' '[/color], @t) + 1, len(@t)))-1)
[COLOR=blue]as[/color] [COLOR=blue]numeric[/color](20,10))
[COLOR=blue]end[/color]
[COLOR=blue]select[/color] @d = [COLOR=blue]case[/color] [COLOR=blue]when[/color] [COLOR=#FF00FF]charindex[/color]([COLOR=red]' '[/color], @t) = 0 [COLOR=blue]then[/color]
1 [COLOR=blue]else[/color]
[COLOR=#FF00FF]cast[/color](
[COLOR=#FF00FF]right[/color](@t,
[COLOR=#FF00FF]charindex[/color]([COLOR=red]'/'[/color], [COLOR=#FF00FF]reverse[/color](@t)) - 1)
[COLOR=blue]as[/color] [COLOR=blue]numeric[/color](20,10))
[COLOR=blue]end[/color]
[COLOR=blue]end[/color]
[COLOR=blue]return[/color] @w + (@n / @d)
[COLOR=blue]end[/color]