select  cast('088.9' as decimal(10,2))*cast('04.0' as decimal(10,2))

解决方案 »

  1.   

    全部都是string,都是这样的数据
      

  2.   

    CREATE FUNCTION Temp_Fun(@T varchar(1000))RETURNS varchar(1000)
    as
    begin
       DECLARE @T1 varchar(500)
       DECLARE @T2 varchar(500)
       set @T1=left(@T,CHARINDEX('*',@T)-1)
       set @T2=right(@T,len(@T)-CHARINDEX('*',@T)) 
       return (select cast(cast(@T1 as decimal(10,2)) as varchar)+ '*' +cast(cast(@T2 as decimal(10,2)) as varchar)) 
    end
    select dbo.Temp_Fun('088.9*04.0')
      

  3.   

    不定项的!!CREATE FUNCTION Temp_Fun(@T varchar(1000))RETURNS varchar(1000)
    as
    begin
       declare @A table([id] int,A1 varchar(500))
       DECLARE @TT varchar(1000)
       DECLARE @T1 varchar(500)
       DECLARE @T2 varchar(500)
       DECLARE @i int
       DECLARE @j int
       set @TT=@T
       set @i=1
       set @j=len(@T)-len(replace(@T,'*',''))
       set @TT=@T
       while @i<=@j
       begin
         if @i=1
            insert @A select @i,cast(cast(left(@TT,CHARINDEX('*',@TT)-1)as decimal(10,2))as varchar)
         else
            insert @A select @i,'*'+cast(cast(left(@TT,CHARINDEX('*',@TT)-1)as decimal(10,2))as varchar) 
          set @TT=STUFF(@TT,1,CHARINDEX('*',@TT),'')
          set @i=@i+1
       end
       insert @A select @i,'*'+@TT
       set @i=1
       set @TT=''
       while @i<=(@j+1)
       begin
          select @TT=@TT + A1 from @A where [id]=@i
          set @i=@i+1
       end
       return @TT
    end
    select dbo.Temp_Fun('088.9*04.0*14.0')
      

  4.   


    CREATE FUNCTION aaa(@str varchar(1000))RETURNS varchar(1000)
    as
    beginreturn Cast(cast(left(@str,charindex('*',@str) - 1) as decimal(10,2)) as varchar)+'*'+Cast(cast(substring(@str,charindex('*',@str) + 1,1000) as decimal(10,2)) as varchar)
    end
    go select dbo.aaa('111.2*333')select dbo.aaa(列名) from tablenamedrop function aaa