#进阶4:常见函数(单行函数) /* 将一组逻辑语句封装在方法体中,对外暴露方法名 语法: SELECT 函数名() 【FROM 表名】 分类: 1、单行函数:concat,length,ifnull等等 2、分组函数:聚合函数,做统计使用 */ USE myemployees; #1、单行函数 #1.1、字符函数 # length()获取参数值的字节个数 SELECT Length('john'); #concat()拼接 SELECT Concat(last_name, ' ', first_name) FROM employees; #upper, lower SELECT UPPER('john'); SELECT LOWER('JOHN'); #substr, substring #索引从1开始 SELECT Substr('what a lovely dog!', 6, 8) AS out_put; # 从索引6开始的8个字符 #instr #子串初始位置在大串中第一次出现的索引 SELECT Instr('what a lovely dog!', 'dog') AS out_put; #trim #去空格/特殊字符 SELECT Length(Trim(' aaa ')) AS out_put; SELECT Trim('a' FROM 'aaaSSSaaa') AS out_put; #lpad, rpad #左/右边填充,用指定字符填充到指定长度 SELECT Lpad('aaaa', 10, '*') AS out_put; #replace #替换全部指定字符 SELECT Replace('cat dog dog', 'dog', 'cat'); #1.2、数学函数 #round #四舍五入 SELECT Round(-1.5); SELECT Round(-1.4, 2); #小数点后保留2位 #ceil, floor #向上/下取整 SELECT Ceil(1.20); SELECT Ceil(-1.2); SELECT Floor(-1.2); #truncate #截断,保留指定的位数 SELECT Truncate(1.6999, 2); #mod #取余: a - (a/b)*b SELECT Mod(-10, 3); #1.3、日期函数 #now #当前系统日期+时间 SELECT Now(); #curdate, curtime #当前系统日期/时间 SELECT Curdate(); SELECT Curtime(); #获取指定的部分 SELECT Year(Now()); SELECT Month(Now()); #str_to_date #将字符转换为指定格式的日期 SELECT Str_to_date('07-02-2020', '%m-%d-%Y'); #案例1:查询1992-3-2入职的员工信息 SELECT * FROM employees WHERE Date(hiredate) = '1992-04-03'; SELECT * FROM employees WHERE hiredate = str_to_date('4-3 1992', '%c-%d %Y'); #date_format #将日期转换为字符 SELECT date_format(Now(), '%Y年%m月%d日') AS out_put; #1.4、其他函数 SELECT VERSION(); SELECT DATABASE(); SELECT USER(); #1.5、流程控制函数 #if函数,实现if-else的效果 SELECT IF(10>5, '大', '小'); #查询员工是否有奖金,有就列出来 SELECT last_name, commission_pct, IF(commission_pct IS NULL, 'no commission', commission_pct) FROM employees; #case函数 /*查询员工的工资,要求: 部门号=30,显示的工资为1.1倍 部门号=40,显示的工资为1.2倍 部门号=50,显示的工资为1.3倍 其他部门显示原工资 */ SELECT salary AS 原始工资, department_id, CASE department_id WHEN 30 THEN salary*1.1 WHEN 40 THEN salary*1.2 WHEN 50 THEN salary*1.3 ELSE salary END AS 新工资 FROM employees; #查询员工的工资情况: /*如果工资>20000,A级别 如果工资>15000,B级别 否则,C级别 */ SELECT salary, CASE WHEN salary > 20000 THEN 'A' WHEN salary > 15000 THEN 'B' ELSE 'C' END AS "rank" FROM employees;