declare @A  float
declare @B  float
declare @C  varchar(100)
declare @D  varchar(10)Set @D='个'
Set @C=Ltrim(Str((@A/@B),10,4))+@D如上所示,A和B均为Float型,进行运算后使用Str函数将值变为字符型输出。
例如:A=10  B=3  结果为3.3333个
      A=10  B=2  结果为5.0000个
      A=10  B=4  结果为2.5000个如何使A/B 运算后的值如果小数位数大于4位时自动保留4位小数,
小数位数小于四位时只显示所得位数而不填充0。
总觉得Str函数无法完成这个功能,请高手指教!!!

解决方案 »

  1.   


    cast((@A/@B) as numeric(18,4))
      

  2.   

    我需要得到这个结果
    例如:A=10 B=3 结果为3.3333个
      A=10 B=2 结果为5个
      A=10 B=4 结果为2.5个
      

  3.   

    declare @A float
    declare @B float
    declare @C varchar(100)
    declare @D varchar(10)
    set @a=10
    set @b=2
    Set @D='个'
    Set @C=Ltrim(convert(varchar(50),convert(float,convert(dec(18,4),(@A*1.0000/@B)))))+@D
    select @cset @a=10
    set @b=3
    Set @D='个'
    Set @C=Ltrim(convert(varchar(50),convert(float,convert(dec(18,4),(@A*1.0000/@B)))))+@D
    select @c
    /*                                                                                                     
    ---------------------------------------------------------------------------------------------------- 
    5个(所影响的行数为 1 行)                                                                                                     
    ---------------------------------------------------------------------------------------------------- 
    3.3333个(所影响的行数为 1 行)
      

  4.   


    declare @A float
    declare @B float
    declare @C varchar(100)
    declare @D varchar(10)
    set @A = 10
    set @b = 2Set @D='个'
    Set @C=Ltrim(cast(cast(round(@A*1./@B,2) as decimal(18,4)) as float))+@Dprint @C
    5个
      

  5.   


    --上边round里的2改为4!没看仔细。
    declare @A float
    declare @B float
    declare @C varchar(100)
    declare @D varchar(10)
    set @A = 10
    set @b = 3Set @D='个'
    Set @C=Ltrim(cast(cast(round(@A*1./@B,4) as decimal(18,4)) as float))+@Dprint @C3.3333个
    declare @A float
    declare @B float
    declare @C varchar(100)
    declare @D varchar(10)
    set @A = 10
    set @b = 4Set @D='个'
    Set @C=Ltrim(cast(cast(round(@A*1./@B,4) as decimal(18,4)) as float))+@Dprint @C
    2.5个
      

  6.   

    declare @A float
    declare @B float
    declare @C varchar(100)
    declare @D varchar(10)
    Set @D ='个'declare @t varchar(20)
    set @a = 10
    set @b = 2
    set @t = cast(@A/@B as varchar(20))
    if charindex('.',@t)>0
    set @t = left(@t,charindex('.',@t) + 4)
    Set @C = @t+@D
    print @cset @a = 10
    set @b = 3
    set @t = cast(@A/@B as varchar(20))
    if charindex('.',@t)>0
    set @t = left(@t,charindex('.',@t) + 4)
    Set @C = @t+@D
    print @cset @a = 10
    set @b = 4
    set @t = cast(@A/@B as varchar(20))
    if charindex('.',@t)>0
    set @t = left(@t,charindex('.',@t) + 4)
    Set @C = @t+@D
    print @c
      

  7.   


    declare @A float
    declare @B float
    set @A=10
    set @B=3select rtrim(cast((@A/@B) as numeric(18,4)))
      

  8.   


    declare @A float
    declare @B float
    declare @C varchar(100)
    declare @D varchar(10)
    set @A=7
    set @B=3Set @D='个'
    Set @C=cast(cast(cast((@A*1.0/@B)as decimal(18,4))as float)as nvarchar(10))+@D
    print @C
      

  9.   

    [code=SQ]
    declare @A float
    declare @B float
    declare @C varchar(100)
    declare @D varchar(10)set @A=6
    set @B=3
    Set @D='个'
    Set @C=ltrim(round(@A/@B,4))+@D
    select @C
    /*
    ----------------------------------------------------------------------------------------------------
    2个(1 行受影响)
    */set @A=7
    set @B=3
    Set @D='个'
    Set @C=ltrim(round(@A/@B,4))+@D
    select @C
    /*
    ----------------------------------------------------------------------------------------------------
    2.3333个(1 行受影响)
    */
    [/code]
      

  10.   

    晕,上面的格式乱了
    [code=SQ]declare @A float 
    declare @B float 
    declare @C varchar(100) 
    declare @D varchar(10) set @A=6 
    set @B=3 
    Set @D='个' 
    Set @C=ltrim(round(@A/@B,4))+@D 
    select @C 
    /* 
    ---------------------------------------------------------------------------------------------------- 
    2个 (1 行受影响) 
    */ set @A=7 
    set @B=3 
    Set @D='个' 
    Set @C=ltrim(round(@A/@B,4))+@D 
    select @C 
    /* 
    ---------------------------------------------------------------------------------------------------- 
    2.3333个 (1 行受影响) 
    */ [/code]
      

  11.   

    看懂 CAST的帮助,还有其它收获。