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

as

BEGIN

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

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

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

   set @Bolunen = Ltrim( RTrim( Left( @Kesir,
                                      @Boy - @Pos - 1 
                                    ) 
                              )
                       )
                               
    return case

             /* Sıfır Kontrol -> Kesir SIFIR mı? */
             when @Kesir
                = ''0''

             /* Sıfır Kontrol -> Kesir SIFIR ise Sonuç = Sıfır ( 0 ) */
             then   0.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 İlk Karakter mi Kontrol -> Bölüm ilk karakter mi? */
                           when @Pos
                              = 1

                          /* Bölüm İlk Karakter mi Kontrol -> Bölüm ilk karakterse Sonuç = Sıfır ( 0 )  */
                          then 0.00

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

                                 /* Sayısal Kontrol -> Sonuç Sayısal mı? */
                                 when IsNumeric( @Bolunen )
                                    = 1

                                 /* Sayısal Kontrol -> Sonuç Sayısalsa İşle*/
                                 then Cast( @Bolunen as float )

                                 /* Sayısal Kontrol -> Sonuç Sayısal Değilse Sonuç = Sıfır ( 0 ) */
                                 else 0.00

                               end

                         end

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

                           /* Sayısal Kontrol -> Sonuç Sayısal mı? */
                           when IsNumeric( @Kesir )
                              = 1

                           /* Sayısal Kontrol -> Sonuç Sayısalsa İşle */
                           then Cast( @Bolunen as float )

                           /* Sayısal Kontrol -> Sonuç Sayısal Değilse Sonuç = Sıfır ( 0 ) */
                           else 0.00

                         end

                  end

           end 

END
'

EXEC(@SQL)
END




