个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~
MySQL函数
- ⑥ 字符串函数、数值函数、日期函数、流程函数
- 1. 字符串函数
- 2. 数值函数
- 3. 日期函数
- 4. 流程函数
⑥ 字符串函数、数值函数、日期函数、流程函数
1. 字符串函数
常见字符串函数
:
-
①字符串拼接,将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)
-
2. 数值函数
常见数值函数
:
-
①向上取整
-
-
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');
3. 日期函数
常见日期函数
:
-
①返回当前日期
-
-
CURDATE()
-
-
②返回当前时间
-
-
CURTIME()
-
-
③返回当前日期和时间
-
-
NOW()
-
-
④获取指定date的年份
-
-
YEAR(date)
-
-
⑤获取指定date的月份
-
-
MONTH(date)
-
-
⑥获取指定date的日期
-
-
DAY(date)
-
-
⑦返回一个日期/时间值加上一个时间间隔exper后的时间值
-
-
DATE_ADD(date,INTERVAL exper type)
-
-
⑧返回起始时间date1和结束时间date2之间的天数
-
-
DATEDIFF(date1,date2)
-
4. 流程函数
流程函数
:
-
流程函数是一类常用的函数,可以在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; --