字符串函数
常用的字符串函数有 concat(S1,S2,..Sn) , lower(str) , upper(str) ,lpad(str,n,pad) , rpad(str,n,pad) ,trim(str) , substring(str,start,len)
小括号里面是函数的参数
功能 :
concat(S1,S2,..Sn) 字符串拼接,将(S1,S2,..Sn)拼接成一个字符串
lower(str) 将字符串str全部转为小写
upper(str) 将字符串str全部转为大写
lpad(str,n,pad) 左填充,用字符串pad对str的左边进行填充,达到n个字符串长度
rpad(str,n,pad) 右填充,用字符串pad对str的右边进行填充,达到n个字符串长度
trim(str) 去掉字符串头部和尾部的空格
substring(str,start,len) 返回从字符串str从start位置起的len个长度的字符串(也就是截取字符串)
代码演示:
-- concat(s1,s2,..sn) 字符串拼接
select concat('hello','mysql');
-- lower(str) 字符串全部转为小写
select lower('HELLO');
-- upper(str) 字符串全部转为大写
select upper('hello');
-- lpad(str,n,pad) 左填充 ---01
select lpad('01',5,'-');
-- rpad(str,n,pad) 右填充 01---
select rpad('01',5,'-');
-- trim(str) 去掉字符串头部和尾部的空格
select trim(' hello mysql ');
-- substring(str,start,len) 字符串截取 这里下标是从1开始的
select substring('hello mysql',1,5);
-- 1.由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0,比如,1号员工的工号应该为00001。
update emp1 set workon = lpad(workon,5,'0');
数值函数
常见的数值函数如下:
函数 功能
ceil(x) 向上取整
floor(x) 向下取整
mod(x,y) 返回x/y的模
rand() 返回0~1内的随机数
round(x,y) 求参数x的四舍五入的值,保留y位小数
代码演示:
-- 数值函数
-- ceil (x) 向上取整 -- 2
select ceil(1.1);
-- floor (x) 向下取整 -- 2
select floor(2.9);
-- mod 取模
select mod(6,4);
-- rand 放回0~1的随机数
select rand();
-- round(x,y) 求参数x 的四舍五入的值 保留y位小数
select round(2.345,2);
-- 案例: 通过数据库函数,生成一个六位数的随机验证码
select lpad(round(rand()*1000000,0),6,0) ;
select lpad( round( rand()*1000000 , 0 ),6 ,'0');
日期函数
常见的日期函数如下:
函数 功能
curdate() 返回当前日期
curtime() 返回当前时间
now() 返回当前日期和时间
year() 获取指定date的年份
month(date) 获取指定date的月份
day(date) 获取指定date的日期
date_add(date,interval expr type)
返回一个日期/时间值加上一个时间间隔 expr 后的时间值(理解不了没关系,到代码演示你就懂了)
datediff(date1,date2)
返回起始时间 date1 和 结束时间 date2 之间的天数
代码演示:
-- 日期函数
-- curdate 返回当前日期
select curdate();
-- curtime 返回当前时间
select curtime();
-- now() 返回当前日期和时间
select now();
-- year month day
select year(now());
select month(now());
select day(now());
-- date_add (date,interval expr type) 往后推迟 70 个月
select date_add(now(),interval 70 month );
-- datediff(date1,date2) 相差天数
select datediff('2022-4-18','2001-12-2');
-- 查询所有员工的入职天数,并根据入职天数倒叙排序
select name,datediff(curdate(),entrydate) as 'entrydates'from emp1 order by entrydates desc ;
流程函数
流程函数也是常用的一类函数,可以在SQL语句中实现条件筛选,从而提高语句的效率
常见的数值函数如下:
函数 功能
if(value,true,false) 如果value为真,则返回true,否则返回false
if null(value1,value2) 如果value1不为空,返回value1,否则返value2
case when [val1] then [res1] ... else [default] end
如果 val 为 true ,返回 res1 , ... 否则返回 default 默认值
代码演示:
-- 流程函数
-- if(value,t,f) 如果value 为真,则返回t,否则返回f
select if(true,'OK','error');
-- ifnull(value1,value2) 如果value1不为空,返回value1,否则返回value2
select ifnull('ok','Default');
select ifnull(' ','Default');
select ifnull(null,'Default');
-- 案例: 统计班级各个学员的成绩,展示的规则如下:
-- >=85 , 展示优秀
-- >=60 , 展示及格
-- 否则, 展示不及格
create table score(
id int comment 'ID',
name varchar(20) comment '姓名',
math int comment '数学',
english int comment '英语',
language int comment '语文'
)comment '学员成绩表';
insert into score(id, name, math, english, language) VALUES
(1,'张三',67,88,95),(2,'李四',23,66,90),(3,'王五',56,98,76);
select
id,
name,
(case when math>=85 then '优秀' when math>=60 then '及格' else '不及格' end) '数学',
(case when english>=85 then '优秀' when english>=60 then '及格' else '不及格' end) '英语',
(case when language>=85 then '优秀' when language>=60 then '及格' else '不及格' end) '语文'
from score;
总结:

总结图片来自黑马程序员,如有侵权,立马删除!制作文章不易,如果本篇文章对你有所帮助,可以点赞收藏加关注哦,你们的关注是对小编最大的支持!!!

341




被折叠的 条评论
为什么被折叠?



