当前位置: 代码迷 >> Sql Server >> 求SQL话语小数后减少到2位
  详细解决方案

求SQL话语小数后减少到2位

热度:60   发布时间:2016-04-24 20:01:29.0
求SQL语句小数后减少到2位
A表

ID   SUM
1     10.0000002
2     10.010
3     15.050
4     18.1999999
...........


要求结果

ID   SUM
1     10.00
2     10.01
3     15.10
4     18.20
...
数据库中不只这四条记录,还有很多,都需要改成保留小数后2位,求教各位大哥美女....

------解决方案--------------------
select id,convert(decimal(9,2),[sum]) from a
------解决方案--------------------

;with cte (id,num) as
(
select 1,10.0000002
union all select 2,10.010
union all select 3,15.050
union all select 4,18.1999999
)
select ID,cast(num as numeric(10,2)) as [sum] from cte

/*
ID sum
1 10.00
2 10.01
3 15.05
4 18.20
*/


------解决方案--------------------
只保留两位小数, 
15.050--->15.10
这个是楼主写错了吧?

------解决方案--------------------

;with cte (id,num) as
(
select 1,10.0000002
union all select 2,10.010
union all select 3,15.050
union all select 4,18.1999999
)

select ID,
       sum=cast(num as decimal(10,2)) 
from cte
/*
ID sum
1 10.0000000
2 10.0100000
3 15.0500000
4 18.1900000
*/

------解决方案--------------------
四舍五入....
------解决方案--------------------
引用:
只保留两位小数, 
15.050--->15.10
这个是楼主写错了吧?


估计是四舍五入了
------解决方案--------------------

create table #test
(id int identity,testPrice money)
go
insert into #test
select 10.0000002
union all select 2100.090
union all select 375.050
union all select 4108.1909999
go
select id,convert(numeric(10,2),testPrice) as testPrice from #test



------解决方案--------------------

create table #test
(id int identity,[SUM] money)
go
insert into #test
select 10.0000002
union all select 2100.090
union all select 375.050
union all select 4108.1909999
go
select id,convert(numeric(10,2),[SUM]) as [SUM] from #test


------解决方案--------------------
引用:
Quote: 引用:

只保留两位小数, 
15.050--->15.10
这个是楼主写错了吧?


估计是四舍五入了


保留两位小数,要变化也是先5变成6,也没有办到小数位后的第一位呀?
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

只保留两位小数, 
15.050--->15.10
这个是楼主写错了吧?


估计是四舍五入了


保留两位小数,要变化也是先5变成6,也没有办到小数位后的第一位呀?


呵呵 对,你真仔细,我都没看出来
------解决方案--------------------
numeric,decimal啥区别?
------解决方案--------------------
convert(decimal(18,2),字段名)
------解决方案--------------------

;with cte (id,num) as
(
select 1,10.0000002
union all select 2,10.010
union all select 3,15.050
union all select 4,18.1999999
)
select ID,convert(decimal(10,2),round(num,1)) as [sum] from cte

--结果
ID          sum
----------- ---------------------------------------
1           10.00
2           10.00
3           15.10
4           18.20

(4 行受影响

------解决方案--------------------
他这个四舍五入还要判断小数点后第三位的大小啊。。。。
------解决方案--------------------

with cte (id,num) as
(
select 1,10.0000002
union all select 2,10.010
union all select 3,15.050
union all select 4,18.1999999
)
select ID,cast([num] as decimal(10,2)) from cte
  相关解决方案