
常见字符串函数:
①字符串拼接,将S1,S2,S3…凭借成一个字符串
CONCAT(S1,S2,...Sn)②将字符串str全部传换成小写
LOWER(str)③将字符串str全部转换成大写
UPPER(str)④左填充,用字符串pad对str的左边进行填充,达到n个字符串长度
LPAD(str,n,pad)⑤右填充,用字符串pad对str的右边进行填充,达到n个字符串长度
RPAD(str,n,pad)⑥去掉字符串头部和尾部的空格
TRIM(str)⑦返回从字符串str从start位置起的len长度的字符串
SUBSTRING(str,start,len)常见数值函数:
①向上取整
CEIL(X)②向下取整
FLOOR(X)③返回x/y的模(余数)
MOD(X,Y)④返回0 - 1内的随机数
RAND()⑤求参数x的四舍五入,保留y位小数
ROUND(X,Y)-- 案例:通过数据库函数生成一个6位数的随机验证码
SELECT LPAD(ROUND(RAND()*1000000,0),6,'0');常见日期函数:
①返回当前日期
CURDATE()②返回当前时间
CURTIME()③返回当前日期和时间
NOW()④获取指定date的年份
YEAR(date)⑤获取指定date的月份
MONTH(date)⑥获取指定date的日期
DAY(date)⑦返回一个日期/时间值加上一个时间间隔exper后的时间值
DATE_ADD(date,INTERVAL exper type)⑧返回起始时间date1和结束时间date2之间的天数
DATEDIFF(date1,date2)流程函数:
流程函数是一类常用的函数,可以在SQL语句中实现条件筛选,从而提高语句的效率。
①如果value为true,返回t,否则返回f
IF(value,t,f)②如果value不为空,返回value1,否则返回value2
IFNULL(value1,value2)③如果val1为true,返回res1,…否则返回default默认值,END结束
CASE
WHEN [val1] THEN [res1]
WHEN [val2] THEN [res2]
...
WHEN [valn] THEN [resn]
ELSE [default]
END④如果exper的值等于val1,返回res1,…否则返回default默认值,END结束
CASE [expr]
WHEN [val1] THEN [res1]
WHEN [val2] THEN [res2]
...
WHEN [valn] THEN [resn]
ELSE [default]
END-- 演示
-- 创建表,插入数据
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;
--