上期文章
MySQL(二)——SQL
文章目录
- 上期文章
- 字符串函数
- 数值函数
- 日期函数
- 流程函数
- 总结
函数:一段可以直接被另一段程序调用的程序或代码
字符串函数
函数 |
功能 |
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 函数(参数);
select concat('hello',' world');
select lower('Hello');
select upper('hello');
select lpad('05', 5, '-');
select rpad('05', 5, '-');
select trim(' hello world ');
select substring('hello world', 1, 5);
update emp set workno = lpad(workno, 5, '0');
数值函数
函数 |
功能 |
CEIL(x) |
向上取整 |
FLOOR(x) |
向下取整 |
MOD(x, y) |
返回x/y的模 |
RAND() |
返回0-1内的随机数 |
ROUND(x, y) |
求参数x的四舍五入的值,保留y位小数 |
select ceil(1.1);
select floor(1.9);
select mod(6, 4);
select rand();
select round(2.345, 2);
select lpad(round(rand()*1000000, 0), 6, 0);
select substring(rand(), 3, 6);
日期函数
函数 |
功能 |
CURDATE() |
返回当前日期 |
CURTIME() |
返回当前时间 |
NOW() |
返回当前日期和时间 |
YEAR(date) |
获取指定date的年份 |
MONTH(date) |
获取指定date的月份 |
DAY(date) |
获取指定date的日期 |
DATE_ADD(date, INTERVAL expr type) |
返回一个日期/时间值加上一个时间间隔expr后的时间值 |
DATEDIFF(date1, date2) |
返回起始时间date1和结束时间date2之间的天数 |
select curdate();
select curtime();
select now();
select year(now());
select month(now());
select day(now());
select date_add(now(), INTERVAL 70 day);
select datediff('2021-10-01', '2021-12-01');
select name, datediff(curdate(), entrydate) '入职天数' from emp order by 入职天数 desc ;
流程函数
函数 |
功能 |
IF(value, t, f) |
如果value为true,则返回t,否则返回f |
IFNULL(value1, value2) |
如果value1不为空,返回value1,否则返回value2 |
CASE WHEN [ val1 ] THEN [res1] …ELSE[ default ] END |
如果val1为true,返回res1,…否则返回default默认值 |
CASE [ expr ] WHEN [val1] THEN [res1] … ELSE[ default ] END |
如果expr的值等于val1,返回res1,…否则返回default默认值 |
select if(true, 'ok', 'error');
select ifnull('ok', 'default');
select ifnull(null, 'default');
select
name,
(case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end) as '工作城市'
from emp;
select
name,
(case when math >= 85 then '优秀' when math >=60 then '及格' else '不及格' end) as '数学成绩',
(case when english >= 85 then '优秀' when math >=60 then '及格' else '不及格' end) as '英语成绩',
(case when chinese >= 85 then '优秀' when math >=60 then '及格' else '不及格' end) as '语文成绩'
from score;
总结