一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第22天,点击查看活动详情。
前言
上篇我们学习了一部分MySQL中的函数。有兴趣的小伙伴可以阅读(# MySQL学习-函数(一))。
下面继续学习MySQL中的函数。
数值函数
示例一
获取随机数。
SELECT RAND(), RAND(), RAND(10), RAND(10),RAND(-1), RAND(-1)
FROM DUAL
| RAND() | RAND() | RAND(10) | RAND(10) | RAND(-1) | RAND(-1) |
|---|---|---|---|---|---|
| 0.27525813716953446 | 0.20539978445079157 | 0.6570515219653505 | 0.6570515219653505 | 0.9050373219931845 | 0.9050373219931845 |
可以从结果中看到RAND()是获取0-1的随机数,并且每次运行的结果不一样。但是当输入x值的时候,比如10和-1,结果中的随机数就会相同。并且每次运行的结果都一样。
示例二
四舍五入
SELECT ROUND(123.556), ROUND(123.456, 0), ROUND(123.456, 1), ROUND(123.456, -1)
FROM DUAL
| ROUND(123.556) | ROUND(123.456, 0) | ROUND(123.456, 1) | ROUND(123.456, -1) |
|---|---|---|---|
| 124 | 123 | 123.5 | 120 |
四舍五入和我们学过的一样,如果后面跟逗号数字,表示保留几位小数,从这位小数开始四舍五入。如果是负数的话,表示往前几位开始四舍五入。
示例三
截断操作
SELECT TRUNCATE(123.456, 0), TRUNCATE(123.496, 1), TRUNCATE(123.456, -1)
FROM DUAL
| TRUNCATE(123.456, 0) | TRUNCATE(123.496, 1) | TRUNCATE(123.456, -1) |
|---|---|---|
| 123 | 123.4 | 120 |
截断表示从第几位开始截断,不做四舍五入。
单行函数嵌套
示例四
SELECT TRUNCATE(ROUND(123.456, 2), 0)
FROM DUAL
| TRUNCATE(ROUND(123.456, 2), 0) |
|---|
| 123 |
先对123.456四舍五入后是123.46,然后截断0位,是123。
角度与弧度换算函数
| 函数 | 用法 |
|---|---|
| RADIANS(x) | 将角度转化为弧度,其中,参数x为角度值 |
| DEGREES(x) | 将弧度转化为角度,其中,参数x为弧度值 |
示例五
SELECT RADIANS(30), RADIANS(45)
FROM DUAL
| RADIANS(30) | RADIANS(45) |
|---|---|
| 0.5235987755982988 | 0.7853981633974483 |
SELECT DEGREES(2 * PI)
FROM DUAL
| DEGREES(2 * PI) |
|---|
| 360 |
三角函数
| 函数 | 用法 |
|---|---|
| SIN(x) | 返回x的正弦值,其中,参数x为弧度值 |
| ASIN(x) | 返回x的反正弦值,即获取正弦为x的值。如果x的值不在-1和1之间,则返回NULL |
| COS(x) | 返回x的余弦值,其中,参数x为弧度值 |
| ACOS(x) | 返回x的反余弦值,即获取余弦为x的值。如果x的值不在-1和1之间,则返回NULL |
| TAN(x) | 返回x的正切值,其中,参数x为弧度值 |
| ATAN(x) | 返回x的反正切值,即返回正切值为x的值 |
| ATAN2(m, n) | 返回两个参数的反正切值 |
| COT(x) | 返回x的余切值,其中,参数x为弧度值 |
示例六
SELECT SIN(RADIANS(30)), DEGREES(ASIN(1))
FROM DUAL
| SIN(RADIANS(30)) | DEGREES(ASIN(1)) |
|---|---|
| 0.499999999999994 | 90 |
ASIN(1)得出弧度值PI / 2,再转换成角度值,是90度。
示例七
SELECT TAN(RADIANS(45)), DEGREES(ATAN(1))
FROM DUAL
| TAN(RADIANS(45)) | DEGREES(ATAN(1)) |
|---|---|
| 0.999999999999999 | 45 |
今天先学习到这里,明天继续。