小数的处理--解决的问题 --小数中0的处理 --四舍五入的处理 --分母为0 的处理 --结果为小数的处理 cast(round(cast(CASE WHEN @a=0 THEN @a ELSE @b*1.0/@a END as float),5)*100 as varchar(50)) --例 DECLARE @a float SET @a=0.123456 select cast(round(cast(@a as float),2) as varchar(50))
--解决的问题 --小数中0的处理 --四舍五入的处理 --分母为0 的处理 --结果为小数的处理 --charry cast(round(cast(CASE WHEN @a=0 THEN @a ELSE @b*1.0/@a END as float),5)*100 as varchar(50)) --例 DECLARE @a float SET @a=0.123456 select cast(round(cast(@a as float),2) as varchar(50))
-----------------------------------------
0.12(1 row(s) affected)
*/
SET @a=0.095480
SELECT ltrim(str(@a,10,2))
--result
/*----------
0.10(所影响的行数为 1 行)
*/
删除起始空格后返回字符表达式。sql帮助上的!不太明白为什么会出现0.12的结果!
declare @a decimal(10,2)
declare @b varchar(10)select @a = convert(decimal(10,2),0.215)
select @b = @a
select @b,@a因为是字符,decimal类型会省略小数前的0
--小数中0的处理
--四舍五入的处理
--分母为0 的处理
--结果为小数的处理
cast(round(cast(CASE WHEN @a=0 THEN @a ELSE @b*1.0/@a END as float),5)*100 as varchar(50))
--例
DECLARE @a float
SET @a=0.123456
select cast(round(cast(@a as float),2) as varchar(50))
--解决的问题
--小数中0的处理
--四舍五入的处理
--分母为0 的处理
--结果为小数的处理
--charry
cast(round(cast(CASE WHEN @a=0 THEN @a ELSE @b*1.0/@a END as float),5)*100 as varchar(50))
--例
DECLARE @a float
SET @a=0.123456
select cast(round(cast(@a as float),2) as varchar(50))