MySQL常用数值函数

栏目: 数据库 · 发布时间: 5年前

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

数值函数:

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

MySQL常用数值函数

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<d  ORDER BY RAND() LIMIT 1000;

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2019-01/156514.htm


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

领域驱动设计

领域驱动设计

[美] Eric Evans / 赵俐、盛海艳、刘霞 / 人民邮电出版社 / 2016-6-1 / 69

本书是领域驱动设计方面的经典之作,修订版更是对之前出版的中文版进行了全面的修订和完善。 全书围绕着设计和开发实践,结合若干真实的项目案例,向读者阐述如何在真实的软件开发中应用领域驱动设计。书中给出了领域驱动设计的系统化方法,并将人们普遍接受的一些实践综合到一起,融入了作者的见解和经验,展现了一些可扩展的设计新实践、已验证过的技术以及便于应对复杂领域的软件项目开发的基本原则。一起来看看 《领域驱动设计》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具