MySQL学习笔记5——函数和索引-一、函数

MySQL提供了很多功能强大,而且使用起来非常方便的函数,包括数学函数、字符串处理函数和条件判断函数等。

1、数学函数

数学函数主要用来处理数值数据,常用的主要有3类,分别是取整函数ROUND()、CEIL()、 FLOOR(),绝对值函数ABS()和求余函数MOD()。

  • 向上取整CEIL(X) 和 CEILING(X):返回大于等于X的最小INT型整数。
  • 向下取整FLOOR(X):返回小于等于X的最大INT型整数。
  • 舍入函数ROUND(X,D):X表示要处理的数,D表示保留的小数位数,处理的方式是四舍五入。ROUND(X)表示保留0位小数。
  • 绝对值函数ABS(X):获取X的绝对值。
  • MOD(X,Y):获取X被Y除后的余数。
SELECT
	c.membername AS '会员',
	b.transactionno AS '单号',
	b.transdate AS '交易时间',
	d.goodsname AS '商品名称',
	a.salesvalue AS '交易金额',
	FLOOR(a.salesvalue) AS '积分'	-- FLOOR向下取整
FROM
demo.transactiondetails a
JOIN
demo.transactionhead b ON (a.transactionid = b.transactionid) 
JOIN
demo.membermaster c ON (b.memberid = c.memberid)
JOIN
demo.goodmaster d ON (a.itemnumber = d.itemnumber);

CEIL()函数和FLOOR()用法类似,接下来演示一下ROUND()函数的用法:

SELECT ROUND(salesvalue,2)		-- 保留2位小数
FROM demo.transactiondetails
WHERE transactionid=1 AND itemnumber=1;

2、字符串函数

常用的字符串函数:

  • CONCAT(1,2…):表示把字符串s1、s2…拼接起来,组成一个字符串。
  • CAST(表达式AS CHAR):表示将表达式的值转换成字符串。
  • CHAR_ LENGTH(字符串):表示获取字符串的长度。
  • SPACE(n):表示获取一个由n个空格组成的字符串。
SELECT
CONCAT(goodsname,'(',specification,')') AS 商品信息
FROM
demo.goodmaster
WHERE itemnumber = 1;

打印结果:
在这里插入图片描述

SELECT
-- 把数量转换成字符串
-- 计算字符串的长度
CONCAT(CAST(quantity AS CHAR)),
-- 用空格补齐7位,在字符串后面补齐
SPACE(7-CHAR_LENGTH(CONCAT(CAST(quantity AS CHAR)))) AS 数量
FROM
demo.transactiondetails
WHERE transactionid = 1 AND itemnumber = 1;

除此以外,MySQL还支持SUBSTR ()、MID ()、 TRIM ()、LTRIM ()、RTRIM ()等字符串函数。
在这里插入图片描述

3、条件判断函数

条件判断函数的主要作用,就是根据特定的条件返回不同的值,常用的有两种:

  • IFNULL (V1, V2):表示如果V1的值不为空值,则返回V1,否则返回V2。
  • IF (表达式, V1, V2):如果表达式为真(TRUE) ,则返回V1,否则返回V2。
SELECT
goodsname,
specification,
-- 我们希望规格是空的商品,在拼接商品信息字符串的时候,规格不要是空。
CONCAT(goodsname,'(',IFNULL(specification,''),')') AS 拼接
FROM
demo.goodmaster;

在这里插入图片描述
规格为空时返回拼接信息“橡皮()”后面打印“()”和奇怪,所以我们通过条件判断函数将“()”去除:

SELECT
goodsname,
specification,
-- 这里做判断,如果是空值,返回商品名称,否则就返回拼接规格
IF(
ISNULL(specification),
goodsname,
CONCAT(goodsname,'(',specification,')')
) AS 拼接
FROM
demo.goodmaster;

在这里插入图片描述

上一篇:面试宝典(1)——数据库篇(MySQL)


下一篇:bugfix: com.alibaba.druid.sql.parser.EOFParserException: EOF