Sql查询小数点大于2位的记录

3次阅读
没有评论

假设在表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