假设在表fymx中存在字段为price,数值类型为decimal(6,4)的数据如下
12.0120
1.2300
6.0300
1.0000
20.1125
如何将查询小数点大于2位的记录呢?这里的大于2位小数,指的是小数点大于2位仍有实际有效数字,如12.0120,而1.2300则不包括在内。
方法 floor函数
select price from fymx where price*100-floor(price*100)>0
floor(x),有时候也写做Floor(x),其功能是“向下取整”,或者说“向下舍入”,即取不大于x的最大整数(与“四舍五入”不同,下取整是直接取按照数轴上最接近要求的值左边的值,也就是不大于要求的值的最大的那个),如本例中12.0120,floor(12.0120)=12
更新记录
将字段price中的值四舍五入,保留2位有效数字
update fymx set price=ROUND(price,2) where price*100-floor(price*100)>0
注意:若字段price的数值类型为varchar(20)类型,则在执行where price*100-floor(price*100)>0时,会出现数值类型转换错误提示,因为floor(x)的参数x为数值类型,此时可将语句修改为
where convert(decimal(6,4),price)*100-floor(convert(6,4),price)*100)>0
百家号 互联网微风说
微信公众号 weisico-com
转载请注明:微思考学习网-关注技术,分享知识 >> Sql查询小数点大于2位的记录