mysql-4-functions

#进阶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;

  

mysql-4-functions

上一篇:Oracle查看异常未提交事务


下一篇:Springboot JDBC的事务