SQL 整数不变 四舍五入保留2位小数

cast(round(100,2) as decimal(10,2))
这样整数也会保留2位小数 结果为100.00
我想要如果是整数就不改变,如果是小数才四舍五入保留2位
当然最好连1-2位小数都不改变,要超过2位小数才四舍五入保留2位最好
如果不行,整数不变,不是整数保留2位小数也行

第1个回答  2014-02-19
你就直接用
select round(100.146,2) from dual--100.15
select round(100.14,2) from dual--100.14
select round(100.1,2) from dual--100.1
select round(100,2) from dual--100追问

直接round是不行的,不然我也不会提问了
round只是四舍五入,并不负责截断,我就是开始光round,才发现怎么出现科学计数
另外,我是插入,不是查询

追答

那你把你的出现科学计数的数据贴出来看看,插入和查询跟这个有什么关系,我这只是测试用,到时候替换不就行了,插入不还是insert into table select 字段转换 from table 么,都要用到select 的

追问

update findj set ddyl=round(dingd*jyongl,2) where scid='SF0034'
ddyl是nvarchar类型的

追答

我是指round(dingd*jyongl,2),这个里面你说出现了科学计数法,那么具体是什么数据会出现这个呢?