常用字符串函数

知识点:对字符串的操作

常用函数 对应描述
RIGHT(s,n) 返回字符串 s 的后 n 个字符
LEFT(s,n) 返回字符串 s 的前 n 个字符
MID(s,n,len) 从字符串 s 的 n 位置截取长度为 len 的子字符串,同 SUBSTRING(s,n,len)
LCASE(s) 将字符串 s 的所有字母变成小写字母

字符串函数转载自:https://www.runoob.com/mysql/mysql-functions.html

-- 查询在2025年投递简历的每个岗位,每个月内收到简历的数量和,对应的2026年的同月同岗位收到简历的数量,最后的结果先按first_year_mon月份降序,再按job降序排序显示
SELECT h1.job,first_year_mon,first_year_cnt,second_year_mon,second_year_cnt 
FROM 
-- 2025年的 
(SELECT job,DATE_FORMAT(DATE,'%Y-%m') AS first_year_mon,SUM(num) AS first_year_cnt
FROM resume_info
WHERE DATE LIKE '2025%'  -- 符合最左前缀匹配原则,也走索引
GROUP BY job,first_year_mon) AS h1
-- inner join 假装优化下,inner可以省略
INNER JOIN 
-- 2026年的
(SELECT job,DATE_FORMAT(DATE,'%Y-%m') AS second_year_mon,SUM(num) AS second_year_cnt
FROM resume_info
WHERE DATE LIKE '2026%'  -- 符合最左前缀匹配原则,也走索引
GROUP BY job,second_year_mon) AS h2  
-- 表连接条件:两表job相同且月份相同,
-- 因date日期类型经过 DATE_FORMAT()后变成 字符串,所以使用right()函数取后两位即为月数
ON h1.job=h2.job AND  right(first_year_mon,2)=right(second_year_mon,2) 
-- 排序
ORDER BY first_year_mon DESC,h1.job DESC;