⑥ 【MySQL函数】字符串函数、数值函数、日期函数、流程函数

2023-11-15 09:28:18 浏览数 (1)

个人简介:J
MySQL函数
  • ⑥ 字符串函数、数值函数、日期函数、流程函数
    • 1. 字符串函数
    • 2. 数值函数
    • 3. 日期函数
    • 4. 流程函数

⑥ 字符串函数、数值函数、日期函数、流程函数

1. 字符串函数

常见字符串函数

①字符串拼接,将S1,S2,S3…凭借成一个字符串

代码语言:javascript复制
CONCAT(S1,S2,...Sn)

②将字符串str全部传换成小写

代码语言:javascript复制
LOWER(str)

③将字符串str全部转换成大写

代码语言:javascript复制
UPPER(str)

④左填充,用字符串pad对str的左边进行填充,达到n个字符串长度

代码语言:javascript复制
LPAD(str,n,pad)

⑤右填充,用字符串pad对str的右边进行填充,达到n个字符串长度

代码语言:javascript复制
RPAD(str,n,pad)

⑥去掉字符串头部和尾部的空格

代码语言:javascript复制
TRIM(str)

⑦返回从字符串str从start位置起的len长度的字符串

代码语言:javascript复制
SUBSTRING(str,start,len)

2. 数值函数

常见数值函数

①向上取整

代码语言:javascript复制
CEIL(X)

②向下取整

代码语言:javascript复制
FLOOR(X)

③返回x/y的模(余数)

代码语言:javascript复制
MOD(X,Y)

④返回0 - 1内的随机数

代码语言:javascript复制
RAND()

⑤求参数x的四舍五入,保留y位小数

代码语言:javascript复制
ROUND(X,Y)
代码语言:javascript复制
-- 案例:通过数据库函数生成一个6位数的随机验证码
SELECT LPAD(ROUND(RAND()*1000000,0),6,'0');

3. 日期函数

常见日期函数

①返回当前日期

代码语言:javascript复制
CURDATE()

②返回当前时间

代码语言:javascript复制
CURTIME()

③返回当前日期和时间

代码语言:javascript复制
NOW()

④获取指定date的年份

代码语言:javascript复制
YEAR(date)

⑤获取指定date的月份

代码语言:javascript复制
MONTH(date)

⑥获取指定date的日期

代码语言:javascript复制
DAY(date)

⑦返回一个日期/时间值加上一个时间间隔exper后的时间值

代码语言:javascript复制
DATE_ADD(date,INTERVAL exper type)

⑧返回起始时间date1和结束时间date2之间的天数

代码语言:javascript复制
DATEDIFF(date1,date2)

4. 流程函数

流程函数

流程函数是一类常用的函数,可以在SQL语句中实现条件筛选,从而提高语句的效率。

①如果value为true,返回t,否则返回f

代码语言:javascript复制
IF(value,t,f)

②如果value不为空,返回value1,否则返回value2

代码语言:javascript复制
IFNULL(value1,value2)

③如果val1为true,返回res1,…否则返回default默认值,END结束

代码语言:javascript复制
CASE 
WHEN [val1] THEN [res1]
WHEN [val2] THEN [res2]
...
WHEN [valn] THEN [resn]
ELSE [default]
END

④如果exper的值等于val1,返回res1,…否则返回default默认值,END结束

代码语言:javascript复制
CASE [expr]
WHEN [val1] THEN [res1]
WHEN [val2] THEN [res2]
...
WHEN [valn] THEN [resn]
ELSE [default]
END
代码语言:javascript复制
-- 演示

-- 创建表,插入数据
create table score(
    id int comment 'ID',
    name varchar(20) comment '姓名',
    math int comment '数学',
    english int comment '英语',
    chinese int comment '语文'
) comment '学员成绩表';

insert into score(id, name, math, english, chinese) VALUES (1, 'Tom', 67, 88, 95 ), 
(2, 'Rose' , 23, 66, 90),
(3, 'Jack', 56, 98, 76);


/*
统计班级各个学员的成绩,展示规则如下:
>=85 展示优秀
>=60 展示几个
否则 展示不及格
*/
SELECT 
	id,
	NAME,
	(CASE
		WHEN math >= 85 THEN '优秀'
		WHEN math >= 60 THEN '合格'
	ELSE '不及格' END) AS '数学',
    (CASE
		WHEN english >= 85 THEN '优秀'
		WHEN english >= 60 THEN '合格'
	ELSE '不及格' END) AS '英语',
	(CASE
		WHEN chinese >= 85 THEN '优秀'
		WHEN chinese >= 60 THEN '合格'
	ELSE '不及格' END) AS '语文'
FROM score;

-- 

0 人点赞