引入:
本人菜鸟,今天遇到一个问题,把数据库中的一列值保留两位小数查出来;
在网上搜索了很多关于数据库中保留两位小数的文章,可惜总是不能实现,后来自己总结了下,
才发现原来很简单,是自己没有理解够;
在这之前先介绍下几个函数:
1:round()这是四舍五入函数,用于把数值字段舍入为指定的小数位数。
例如: SELECT round(column_name,decimals) FROM table_name;
网上说这个函数可以保留 四舍五入两位小数,可是我发现SELECT ROUND(19.434,2)出来的是19.430而不是19.43,
可能是由于不能数据库的关系,竟然讲到这个函数,我就对这个函数解释下总结了下网上一些博客对它的了解
round 有两个重载,一个是两个参数,一个是三个参数:
1.带有两个参数.每二个参数是小数点的左边第几位或右边第几位,分别用正负表示.左边为负,右边为负.为四舍五入.
SELECT round(567.45676,-1) 570.00000(-1 表示四舍五入到右边第1位,其中,个位为第0位,四舍五入后舍弃的部分显示为0)
SELECT round(567.45676,2) 567.46000
SELECT round(20,-3) 0
2.带三个参数.第二个参数同上.第三个参数有两种可能,一种是取0为四舍五入.另一种是正负值,则为舍去
SELECT round(567.45676,2,0) 567.46000(跟两个参数意义的结果,可以把两个参数的当为三位参数的特例为第三参数0)
SELECT round(567.45676,2,3) 567.45000(第三个参数不为0,所以为舍去,舍弃两位以后的数字,变为567.45舍弃部位为0所以是567.45000)
SELECT round(567.45676,2,3) 567.45000
2: cast(value as type)函数,其实要保留两位小数,只需要把用SELECT CAST(19.4667 AS decimal(9,2))就可以这样出来是19.47要是不想四舍五入的话,
可以 先用round函数处理下SELECT cast(round(19.4667,2,3) as decimal(9,2)) 19.46当round函数第三个参数不为0就可以;
3:convert(type,value)函数拥有和cast一样的功能SELECT convert( decimal(9,2),round(19.4667,2,3) ) 19.46