加减乘除(+、-、*、/)均可用于数值计算。
SELECT (1 + 1) / (1 * 2.2 - 3)
执行算术函数
单参数数值函数举例:
acos(x), asin(x), atan(x), cos(x), cot(x), exp(x), ln(x), sin(x), sqrt(x), tan(x)
mod()函数:求模操作。
mysql> SELECT MOD(10, 4);
+------------+
| MOD(10, 4) |
+------------+
| 2 |
+------------+
1 row in set (0.00 sec)
mod()函数主要用于整数,但是MySQL还可以用它来处理实数:
mysql> SELECT MOD(10.3, 4);
+--------------+
| MOD(10.3, 4) |
+--------------+
| 2.3 |
+--------------+
1 row in set (0.00 sec)
pow():求幂操作。
mysql> SELECT POW(2,8);
+----------+
| POW(2,8) |
+----------+
| 256 |
+----------+
1 row in set (0.07 sec)
ceil()函数向上截取整数;floor()函数向下截取整数。
mysql> SELECT CEIL(121.22), FLOOR(321.233);
+--------------+----------------+
| CEIL(121.22) | FLOOR(321.233) |
+--------------+----------------+
| 122 | 321 |
+--------------+----------------+
1 row in set (0.00 sec)
round()函数:四舍五入。
mysql> SELECT ROUND(23.4), ROUND(1.34567, 3);
+-------------+-------------------+
| ROUND(23.4) | ROUND(1.34567, 3) |
+-------------+-------------------+
| 23 | 1.346 |
+-------------+-------------------+
1 row in set (0.00 sec)
truncate()函数:去掉不需要的小数位。
mysql> SELECT TRUNCATE(12.4567,1);
+---------------------+
| TRUNCATE(12.4567,1) |
+---------------------+
| 12.4 |
+---------------------+
1 row in set (0.00 sec)
truncate()和round()函数都可以为第二个参数指定一个负数,表是小数点左侧需要被截取或取整多少位:
mysql> SELECT ROUND(17, -1), TRUNCATE(17,-1);
+---------------+-----------------+
| ROUND(17, -1) | TRUNCATE(17,-1) |
+---------------+-----------------+
| 20 | 10 |
+---------------+-----------------+
1 row in set (0.00 sec)
处理有符号数
sign()函数:在参数小于0时返回-1,在参数为0时返回0,在参数大于0时返回1;
abs()函数:返回参数的绝对值。
SELECT account_id, SIGN(avail_balance), ABS(avail_balance)
FROM account;