MySql数据库中确保精度问题解决方案

TRUNCATE(COLUMNAME,NUM) 截取前NUM位。前者表示字段名,后者表示保留几位小数点。
如:250.32952 是某个字段对应的值,那么用TRUNCATE后就是:250.32。
这个方法非常有用,特别是在这样的情况下:如果要求你先将某两个字段的积截取两位,然后再求和,那么这时单用sum()是不可以的!
TRUNCATE(COLUMNAME1*COLUMNAME2,2)就可以轻松搞定。
 
RAND(N)
返回在范围0到1.0内的随机浮点值。如果一个整数参数N被指定,它被用作种子值。
mysql> select RAND();
-> 0.5925
mysql> select RAND(20);
-> 0.1811
mysql> select RAND(20);
-> 0.1811
mysql> select RAND();
-> 0.2079
mysql> select RAND();
-> 0.7888

你不能在一个ORDER BY子句用RAND()值使用列,因为ORDER BY将重复计算列多次。然而在MySQL3.23中,你可以做: SELECT * FROM table_name ORDER BY RAND(),这是有利于得到一个来自SELECT * FROM table1,table2 WHERE a=b AND c


LEAST(X,Y,...)
有2和2个以上的参数,返回最小(最小值)的参数。参数使用下列规则进行比较:
如果返回值被使用在一个INTEGER上下文,或所有的参数都是整数值,他们作为整数比较。
如果返回值被使用在一个REAL上下文,或所有的参数是实数值,他们作为实数比较。
如果任何参数是一个大小敏感的字符串,参数作为大小写敏感的字符串被比较。
在其他的情况下,参数作为大小写无关的字符串被比较。
mysql> select LEAST(2,0);
-> 0
mysql> select LEAST(34.0,3.0,5.0,767.0);
-> 3.0
mysql> select LEAST("B","A","C");
-> "A"

在MySQL 3.22.5以前的版本,你可以使用MIN()而不是LEAST。


GREATEST(X,Y,...)
返回最大(最大值)的参数。参数使用与LEAST一样的规则进行比较。
mysql> select GREATEST(2,0);
-> 2
mysql> select GREATEST(34.0,3.0,5.0,767.0);
-> 767.0
mysql> select GREATEST("B","A","C");
-> "C"

在MySQL在 3.22.5 以前的版本, 你能使用MAX()而不是GREATEST.

DEGREES(X)
返回参数X,从弧度变换为角度。
mysql> select DEGREES(PI());
-> 180.000000
RADIANS(X)
返回参数X,从角度变换为弧度。
mysql> select RADIANS(90);
-> 1.570796

TRUNCATE(X,D)
返回数字X,截断为D位小数。如果D为0,结果将没有小数点或小数部分。
mysql> select TRUNCATE(1.223,1);
-> 1.2
mysql> select TRUNCATE(1.999,1);
-> 1.9
mysql> select TRUNCATE(1.999,0);
-> 1


FLOOR(X)
返回不大于X的最大整数值。

mysql> select FLOOR(1.23);
-> 1
mysql> select FLOOR(-1.23);
-> -2

注意返回值被变换为一个BIGINT!


CEILING(X)
返回不小于X的最小整数值。
mysql> select CEILING(1.23);
-> 2
mysql> select CEILING(-1.23);
-> -1

注意返回值被变换为一个BIGINT!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值