一、字符串函数
常用函数:
函数 | 功能 |
---|---|
CONCAT(s1, s2, …, sn) | 字符串拼接,将s1, s2, …, sn拼接成一个字符串 |
LOWER(str) | 将字符串全部转为小写 |
UPPER(str) | 将字符串全部转为大写 |
LPAD(str, n, pad) | 左填充,用字符串pad对str的左边进行填充,达到n个字符串长度 |
RPAD(str, n, pad) | 右填充,用字符串pad对str的右边进行填充,达到n个字符串长度 |
TRIM(str) | 去掉字符串头部和尾部的空格 |
SUBSTRING(str, start, len) | 返回从字符串str从start位置起的len个长度的字符串 |
REPLACE(str, old_substring, new_substring) | 替换字符串,str :要进行替换操作的字符串,old_substring :要被替换的子串,new_substring :替换后的新子串。 |
案例:
由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0。比如:1号员工的工号应该为00001。表名为emp,企业员工的工号字段为workno
SQL编写如下: 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位小数 |
三、日期函数
常用函数:
函数 | 功能 |
---|---|
CURDATE() | 返回当前日期 |
CURTIME() | 返回当前时间 |
NOW() | 返回当前日期和时间 |
YEAR(date) | 获取指定date的年份 |
MONTH(date) | 获取指定date的月份 |
DAY(date) | 获取指定date的日期 |
DATE_ADD(date, INTERVAL expr type) | 返回一个日期/时间值加上一个时间间隔expr后的时间值 |
DATEDIFF(date1, date2) | 返回起始时间date1和结束时间date2之间的天数 |
案例:
查询所有员工的入职天数,并根据入职天数倒序排序。表名为emp,员工的入职天数字段为entrydate,SQL语句如下:
select name,datediff(curdate(), entrydate) as 'entrydays’ from emp order by entrydays 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默认值 |
案例:
统计班级各个学员的成绩,展示的规则如下:>= 85,展示优秀 。>= 60,展示及格。否则,展示不及格。SQL语句如下:
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 chinese >= 85 then'优秀' when chinese >=60 then'及格' else '不及格' end )'语文' from score;
五、聚合函数
语法: SELECT 聚合函数(字段列表) FROM 表名;
例: SELECT count(id) from employee where workaddress = "广东省";