mysql之数学计算、字符串处理和条件判断

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个空格组成的字符串。
  • 其他函数:


    image.png
#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)

总结一下:


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容