IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[fn_KesirBolunen]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
BEGIN 
DECLARE @SQL VARCHAR(4000) = '
create function [dbo].[fn_KesirBolunen]
( @Kesir  nVarChar( 20 )  /* Kesirli Sayı Metni */
) RETURNS float    

as

BEGIN

   declare @Boy int
   declare @Pos int
   declare @Bolen nVarChar( 20 )

   set @Kesir = IsNull( NullIf( Ltrim( RTrim( @Kesir )
                                     ),
                                ''''
                              ),
                        ''0''
                      )

   set @Boy   = Len( @Kesir)
   set @Pos   = CharIndex( ''/'',
                           @Kesir,
                           1
                         )

   set @Bolen = Ltrim( RTrim( Right( @Kesir,
                                     @Boy - @Pos
                                   )
                            )
                     )

   return case

             /* Sıfır Kontrol -> Kesir SIFIR mü? */
             when @Kesir
                = ''0''
             /* Sıfır Kontrol -> Kesir SIFIR ise Sonuç = Bir ( 1 ) */
             then 1.00

             /* Sıfır Kontrol -> Kesir SIFIR değilse işle */
             else case

                    /* Bölüm Bulundu Kontrol -> Bölüm Bulundu mu? */
                    when @Pos
                       > 0
                    /* Bölüm Bulundu Kontrol -> Bulunduysa İşle */
                    then case

                           /* Bölüm Son Karakter mi Kontrol -> Bölüm son karakter mi? */
                           when @Pos
                              = @Boy
                           /* Bölüm Son Karakter mi Kontrol -> Bölüm son karakterse Sonuç = Bir ( 1 )  */
                           then 1.00

                           /* Bölüm Son Karakter mi Kontrol -> Bölüm Son karakter değilse İşle */
                           else case

                                  /* Sayısal Kontrol -> Sonuç Sayısal mı? */
                                  when IsNumeric( @Bolen )
                                     = 1
                                  /* Sayısal Kontrol -> Sonuç Sayısalsa İşle*/
                                  then case

                                         /* Sıfır Kontrol -> Sonuç Sıfır ( 0 ) mı? */
                                         when Cast(  @Bolen as float )
                                            = 0
                                         /* Sıfır Kontrol -> Sonuç Sıfır ( 0 ) ise */
                                         then  1.00

                                         /* Sıfır Kontrol -> Sonuç Sıfır ( 0 ) değilse */
                                         else Cast( @Bolen as float )

                                       end

                                  /* Sayısal Kontrol -> Sonuç Sayısal Değilse Sonuç = Bir ( 1 ) */
                                  else  1.00

                                end

                         end

                    /* Bölüm Bulundu Kontrol -> Bölüm Bulunmadıysa işle */
                    else 1.00

                  end

          end 

END
'

EXEC(@SQL)
END


