mysql 数字函数是_MySQL常用数值函数

数值函数:

用来处理很多数值方面的运算,使用数值函数,可以免去很多繁杂的判断求值的过程,能够大大提高用户的工作效率。

c10086fce7b2854133a5857ba6813521.png

1、ABS(x):返回 x 的绝对值

mysql> select abs(-0.8),abs(0.8);

+-----------+----------+

| abs(-0.8) | abs(0.8) |

+-----------+----------+

| 0.8 | 0.8 |

+-----------+----------+

2、CEIL(x):返回不小于 x 的最小整数,也就是说得大于或等于x的最小整数

同义词:ceiling(x)

mysql> select ceil(1);

+---------+

| ceil(1) |

+---------+

| 1 |

+---------+

mysql> select ceil(1.23),ceiling(-1.23);

+------------+----------------+

| ceil(1.23) | ceiling(-1.23) |

+------------+----------------+

| 2 | -1 |

+------------+----------------+

3、FLOOR(x):返回不大于 x 的最大整数(与CEIL的用法刚好相反)

mysql> select floor(1.23),floor(-1.23);

+-------------+--------------+

| floor(1.23) | floor(-1.23) |

+-------------+--------------+

| 1 | -2 |

+-------------+--------------+

4、MOD(x,y):返回数字x除以y后的余数:x mod y

和 x%y 的结果相同;

模数和被模数任何一个为NULL(无效数)结果都为 NULL

mysql> select mod(123,10),234%7,3 mod 2;

+-------------+-------+---------+

| mod(123,10) | 234%7 | 3 mod 2 |

+-------------+-------+---------+

| 3 | 3 | 1 |

+-------------+-------+---------+

注意:余数可以有小数;除数为0不抛出异常

mysql> select mod(3.14,3),mod(3,0);

+-------------+----------+

| mod(3.14,3) | mod(3,0) |

+-------------+----------+

| 0.14 | NULL |

+-------------+----------+

5、ROUND(X[,D]):将数字X四舍五入到指定的小数位数D

①如果不指定D,则默认为0

②如果D是负数,表示从小数点的左边进行四舍五入

mysql> select round(1.58),round(1.298,1);

+-------------+----------------+

| round(1.58) | round(1.298,1) |

+-------------+----------------+

| 2 | 1.3 |

+-------------+----------------+

mysql> select round(1.58,0),round(1.298,-1);

+---------------+-----------------+

| round(1.58,0) | round(1.298,-1) |

+---------------+-----------------+

| 2 | 0 |

+---------------+-----------------+

6、TRUNCATE(X,D):将数字X截断到指定的小数位数D(不四舍五入)

①如果D为0,表示不要小数

②如果D是负数,表示从小数点的左边进行截断

mysql> select truncate(1.999,1),truncate(1.999,0);

+-------------------+-------------------+

| truncate(1.999,1) | truncate(1.999,0) |

+-------------------+-------------------+

| 1.9 | 1 |

+-------------------+-------------------+

mysql> select truncate(-1.999,1),truncate(123,-2);

+--------------------+------------------+

| truncate(-1.999,1) | truncate(123,-2) |

+--------------------+------------------+

| -1.9 | 100 |

+--------------------+------------------+

注意:TRUNCATE 和 ROUND 的区别在于 TRUNCATE 仅仅是截断,而不进行四舍五入

mysql> select round(1.235,2),truncate(1.235,2);

+----------------+-------------------+

| round(1.235,2) | truncate(1.235,2) |

+----------------+-------------------+

| 1.24 | 1.23 |

+----------------+-------------------+

7、RAND():返回一个随机浮点数v(0<=v<1.0)

mysql> select rand(),rand();

+--------------------+---------------------+

| rand() | rand() |

+--------------------+---------------------+

| 0.7085628693071779 | 0.19879874978102627 |

+--------------------+---------------------+

RAND(x):指定整数x,则用作种子值,产生一个可重复的数字序列

mysql> select rand(1),rand(2),rand(1);

+---------------------+--------------------+---------------------+

| rand(1) | rand(2) | rand(1) |

+---------------------+--------------------+---------------------+

| 0.40540353712197724 | 0.6555866465490187 | 0.40540353712197724 |

+---------------------+--------------------+---------------------+

利用RAND()函数可以取任意指定范围内的随机数

类似于shell> $((RANDOM % 100))得到随机值

比如:产生 0~100 内的任意随机整数

mysql> select ceil(100*rand()),ceil(100*rand());

+------------------+------------------+

| ceil(100*rand()) | ceil(100*rand()) |

+------------------+------------------+

| 87 | 75 |

+------------------+------------------+

若要得到一个随机整数R,i <= R < j

expr:FLOOR(i + RAND() * (j - i))

Q:取随机整数R,7<=R<12

A:mysql> select floor(7+(rand()*5));

注意:

①当在 WHERE 子句中使用RAND()时,每次当WHERE执行时都要重新计算 RAND()

②不能在ORDER BY子句中使用带有随机值的列

但是,可以以随机的顺序从表中检索行

例如:mysql> SELECT * FROM  players ORDER BY RAND();

③ORDER BY RAND()常和LIMIT子句一起使用:

例如:mysql> SELECT * FROM table1,table2 WHERE a=b AND c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值