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函数无法完成这个功能,请高手指教!!!
cast((@A/@B) as numeric(18,4))
例如:A=10 B=3 结果为3.3333个
A=10 B=2 结果为5个
A=10 B=4 结果为2.5个
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 行)
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个
--上边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个
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
declare @A float
declare @B float
set @A=10
set @B=3select rtrim(cast((@A/@B) as numeric(18,4)))
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
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]
[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]