MySQL-函数-字符串函数/数值函数/日期函数/流程控制函数

函数: 一段可以直接被另一段程序调用的程序或代码

字符串函数

CONCAT, LOWER, UPPER, LPAD, RPAD, TRIM, SUBSTRING

函数 功能
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个长度的字符串
代码 执行结果
字符串拼接: select concat(‘Hello’,‘MySQL’); Hello MySQL
字符串转换为小写: select lower(‘HELLO’); hello
字符串转换为大写: select upper(‘hello’); HELLO
左填充字符串: select lpad(‘01’,5, ‘-’); - - - 01
右填充字符串: select rpad(‘01’,5,‘-’); 01- - -
去掉头部和尾部的空格: select trim(’ Hello MySQL '); Hello MySQL
截取字符串: select substring(‘Hello MySQL’,1,5); Hello

需求: 由于业务变更,企业员工的工号, 统一为5位数, 目前不足5位数的全部在前面补0, 比如1号员工的工号应该为00001

update employee_id set workno = lpad(workno,5,'0');

数值函数

CEIL, FLOOR, MOD, RAND, ROUND

函数 功能 返回值
CEIL(x) 向上取整 select ceil(1.1);–>2
FLOOR(x) 向下取整 select floor(1.9);–>1
MOD(x,y) 返回x/y的模 select mod(3,4);–>3,相当于3%4取余
RAND() 返回0~1内的随机数
ROUND(x,y) 求参数x的四舍五入的值,保留y位小数 select round(2.345,2);–>2.35

需求: 通过数据库的函数,生成一个六位数的随机验证码

select lpad(round(rand()*1000000,0),6,'0');

日期函数

函数 功能 返回值
CURDATE() 返回当前日期 select curdate();
CURTIME() 返回当前时间 select curtime();
NOW() 返回当前日期和时间 select now();
YEAR(date) 获取指定date的年份
MONTH(date) 获取指定date的月份
DAY(date) 获取指定date的日期
DATE_ADD(date, INTERVAL expr type) 返回一个日期/时间值加上一个时间间隔expr后的时间值 select date_add(now(), INTERVAL 70 DAY);
DATEDIFF(date1,date2) 返回起始时间date1和结束时间date2之间的天数 select datediff(‘2021-12-01’,‘2021-10-01’);

案例: 查询所有员工的入职天数,并根据入职天数倒序排序

select name,
datediff(curdate(),entrydate) as 'entrydays' from employee order by entrydays desc;

流程函数

可以在SQl语句中实现条件筛选,提高语句效率

函数 功能
IF (value, t, f) 如果value为true,则返回t,否则返回f
IFNULL(value1, value2) 如果value不为空, 返回value1, 否则返回value2
CASE WHEN [val] THEN [res1] … ELSE[default] END 如果val1为true, 返回res1, …否则返回default默认值
CASE [expr] WHEN [val1] THEN [res1]…ELSE [default] END 如果expr的值等于val1, 返回res1, …否则返回default默认值

需求: 查询某表员工姓名和工作地址(北京/上海–>一线城市,其他–>二线城市)

select name, 
(case workaddress when '北京' then '一线城市' 
when '上海' then '一线城市' else '二线城市' end) 
as '工作地址' from tablex;

你可能感兴趣的:(学习笔记,MySQL,mysql,sql,数据库)