1.数学函数
数学函数:用来处理数值数据,主要有3类-取整函数(ROUND()、CEIL()、FLOOR())、绝对值函数(ABS())、求余函数(MOD())
- CEIL(X)、CELING(X):向上取整,返回大于等于X的最小INT函数。
- FLOOR(X):向下取整,返回小于等于X的最小INT函数。
- ROUND(X,D):舍入函数,X表示要处理的数,D表示保留的小数位数,处理方式就是四舍五入,ROUND(X)
表示保留0位小数。 - ABS(X):获取X的绝对值。
- MOD(X,Y):表示获取X被Y除后的余数。
mysql> SELECT
-> membername AS '会员',
-> transactionno AS '单号',
-> transdate AS '交易时间',
-> goodsname AS '商品名称',
-> salesvalue AS '交易金额',
-> FLOOR(salesvalue) AS '积分' -- 使用FLOOR函数向下取整
-> FROM
-> demo.transactiondetails
+------+------------------+---------------------+----------+----------+------+
| 会员 | 单号 | 交易时间 | 商品名称 | 交易金额 | 积分 |
+------+------------------+---------------------+----------+----------+------+
| 张三 | 0120201201000001 | 2020-12-01 14:25:56 | 书 | 176.22 | 176 |
| 张三 | 0120201201000001 | 2020-12-01 14:25:56 | 笔 | 24.75 | 24 |
| 李四 | 0120201202000001 | 2020-12-02 10:50:50 | 书 | 234.96 | 234 |
| 李四 | 0120201202000001 | 2020-12-02 10:50:50 | 笔 | 26.40 | 26 |
+------+------------------+---------------------+----------+----------+------+
4 rows in set (0.01 sec)
2.字符串函数
字符串函数官方文档:https://dev.mysql.com/doc/refman/8.0/en/string-functions.html
字符串函数主要用到4种函数:CAST()、CONCAT()、CHAR_LENGTH()、SPACE()。
- CONCAT(s1,s2,...):表示把字符串s1、s2...拼接起来,组成一个字符串。
- CAST(表达式 AS CHAR):将表达式的值转换成字符串。
- CHAR_LENGTH(字符串):表示获取字符串的长度。
- SPACE(n):获取一个由n个空格组成的字符串。
-
其他函数:
#1.CONCAT函数拼接
mysql> SELECT
-> CONCAT(goodsname, '(', specification, ')') AS 商品信息 -- 这里把商品名称、括号和规格拼接起来
-> FROM
-> demo.goodsmaster
-> WHERE itemnumber = 1;
+----------+
| 商品信息 |
+----------+
| 书(16开) |
+----------+
1 row in set (0.00 sec)
#2.CAST()函数拼接
mysql> SELECT
-> CAST(quantity AS CHAR) -- 把decimal类型转换成字符串
-> FROM
-> demo.transactiondetails
-> WHERE
-> transactionid = 1 AND itemnumber =1;
+---------------------+
| CAST(price AS CHAR) |
+---------------------+
| 2.000 |
+---------------------+
1 rows in set (0.00 sec)
#3.CHAR_LENGTH()
mysql> SELECT
-> CHAR_LENGTH(CAST(quantity AS CHAR)) AS 长度
-> FROM
-> demo.transactiondetails
-> WHERE
-> transactionid = 1 AND itemnumber =1;
+---------------------+
| 长度 |
+---------------------+
| 5 |
+---------------------+
1 rows in set (0.00 sec)
#4.SPACE()
mysql> SELECT
-> CHAR_LENGTH(CAST(quantity AS CHAR)) AS 长度
-> FROM
-> demo.transactiondetails
-> WHERE
-> transactionid = 1 AND itemnumber =1;
+---------------------+
| 长度 |
+---------------------+
| 5 |
+---------------------+
1 rows in set (0.00 sec)
3.条件判断函数
IF(表达式,V1,V2):如果表达式为真,则返回V1,否则返回V2。
IFNULL(V1,V2):如果V1的值不为空,则返回V1,否则返回V2。
mysql> SELECT
-> goodsname,
-> specification,
-> -- 这里做判断,如果是空值,返回商品名称,否则就拼接规格
-> IF(ISNULL(specification), #ISNULL(specification)表达式判断specification是否为空
-> goodsname,
-> CONCAT(goodsname, '(', specification, ')')) AS 拼接
-> FROM
-> demo.goodsmaster;
+-----------+---------------+----------+
| goodsname | specification | 拼接 |
+-----------+---------------+----------+
| 书 | 16开 | 书(16开) |
| 笔 | NULL | 笔 |
+-----------+---------------+----------+
2 rows in set (0.02 sec)
总结一下: