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();
+---------+
| ceil() |
+---------+
| |
+---------+ mysql> select ceil(1.23),ceiling(-1.23);
+------------+----------------+
| ceil(1.23) | ceiling(-1.23) |
+------------+----------------+
| | - |
+------------+----------------+
3、FLOOR(x):返回不大于 x 的最大整数(与CEIL的用法刚好相反)
mysql> select floor(1.23),floor(-1.23);
+-------------+--------------+
| floor(1.23) | floor(-1.23) |
+-------------+--------------+
| | - |
+-------------+--------------+
4、MOD(x,y):返回数字x除以y后的余数:x mod y
和 x%y 的结果相同;
模数和被模数任何一个为NULL(无效数)结果都为 NULL
mysql> select mod(,),%, mod ;
+-------------+-------+---------+
| mod(,) | % | mod |
+-------------+-------+---------+
| | | |
+-------------+-------+---------+
注意:余数可以有小数;除数为0不抛出异常
mysql> select mod(3.14,),mod(,);
+-------------+----------+
| mod(3.14,) | mod(,) |
+-------------+----------+
| 0.14 | NULL |
+-------------+----------+
5、ROUND(X[,D]):将数字X四舍五入到指定的小数位数D
①如果不指定D,则默认为0
②如果D是负数,表示从小数点的左边进行四舍五入
mysql> select round(1.58),round(1.298,);
+-------------+----------------+
| round(1.58) | round(1.298,) |
+-------------+----------------+
| | 1.3 |
+-------------+----------------+ mysql> select round(1.58,),round(1.298,-);
+---------------+-----------------+
| round(1.58,) | round(1.298,-) |
+---------------+-----------------+
| | |
+---------------+-----------------+
6、TRUNCATE(X,D):将数字X截断到指定的小数位数D(不四舍五入)
①如果D为0,表示不要小数
②如果D是负数,表示从小数点的左边进行截断
mysql> select truncate(1.999,),truncate(1.999,);
+-------------------+-------------------+
| truncate(1.999,) | truncate(1.999,) |
+-------------------+-------------------+
| 1.9 | |
+-------------------+-------------------+ mysql> select truncate(-1.999,),truncate(,-);
+--------------------+------------------+
| truncate(-1.999,) | truncate(,-) |
+--------------------+------------------+
| -1.9 | |
+--------------------+------------------+
注意:TRUNCATE 和 ROUND 的区别在于 TRUNCATE 仅仅是截断,而不进行四舍五入
mysql> select round(1.235,),truncate(1.235,);
+----------------+-------------------+
| round(1.235,) | truncate(1.235,) |
+----------------+-------------------+
| 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(),rand(),rand();
+---------------------+--------------------+---------------------+
| rand() | rand() | rand() |
+---------------------+--------------------+---------------------+
| 0.40540353712197724 | 0.6555866465490187 | 0.40540353712197724 |
+---------------------+--------------------+---------------------+
利用RAND()函数可以取任意指定范围内的随机数
类似于shell> $((RANDOM % 100))得到随机值
比如:产生 0~100 内的任意随机整数
mysql> select ceil(*rand()),ceil(*rand());
+------------------+------------------+
| ceil(*rand()) | ceil(*rand()) |
+------------------+------------------+
| | |
+------------------+------------------+
若要得到一个随机整数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;
最新文章
- 【.net 深呼吸】细说CodeDom(6):方法参数
- windows+caffe(五)——实例2MNIST图片
- Apache Nutch build文件解析
- submit 后台运行代码
- 是uibutton跟tableviewcell同步使用一个bug
- alv中编辑的时候quan字段小数位数被截取掉
- iOS从不同页面跳转回到指定控制器
- bzoj 2301 [HAOI2011]Problem b(莫比乌斯反演)
- grails的controller和action那点事---远程调试groovy代码
- 《Linux命令行与shell脚本编程大全》第二十五章 创建与数据库、web及电子邮件相关的脚本
- JMS学习(一):初识JMS
- AI,如何影响你在看的影视剧和综艺?
- Hystrix介绍
- 易语言 - 模块 - 子程序 - 纯真IP数据库查询
- mysql,Can &#39;t connect to local MySQL server through socket &#39;/tmp/mysql.sock &#39;(2) ";
- own address as source address
- Confluence 6 性能优化
- 用git,clone依赖的库
- DateTimeOffset DateTime
- .NET Core开发日志——配置
热门文章
- UIScrollView 和 UICollectionView 分页效果
- 计算机程序的思维逻辑 (73) - 并发容器 - 写时拷贝的List和Set
- 3298: [USACO 2011Open]cow checkers
- loadrunner:Auto Correlate自动定位瓶颈
- 在Pypi上发布自己的Python包
- switch 在什么时候可以不写default
- python 接口自动化测试(二)
- struts2(二) 表单参数自动封装和参数类型自动转换
- 打印zigzag矩阵
- 简学Python第六章__class面向对象编程与异常处理