#常见的函数
/*
常见的函数
概念:类似于Java/js中的方法,将一组逻辑语句,封装在方法体内,对外暴露方法名
-隐藏了实现细节
-提高了代码的重用性
调用:select 函数名(实参列表)
from 表名
分类:
-单行函数 concat(),length(),ifnull()
-分组函数 功能:做统计使用,聚合函数,组函数
单行函数:字符函数
length,concat,substr,substring,instr,trim,upper/lower,lpad/rpad,replace
数学函数:
abs,round,ceil,floor,truncate,mod
*/
# 字符函数
# length()获取参数值的字节数
select lenrth('李政');
# upper/lower 大写/小写
select upper('lizheng');
# 案例:将姓变大写,名变小写,然后拼接
select concat(upper(last_name),lower(first_name))
from employees;
# substr/substring 截取指定索引位置的字符串
# 截取从指定索引位置后面的所有字符
select substr('abcdefg',4);
select substr('abcdefg',4,2);
# 查询last_name,其中首字母大写,其他字符小写,然后用_拼接起来
use myemployees;
select concat(upper(substr(last_name,1,1)),'_',lower(substr(last_name,2)))
from employees;
# instr 返回子串第一次出现的索引,如果找不到,则返回0
select instr('aabbccdd','d');
# trim 去除前后指定的字符,默认是空格
select trim(' aabbcc ');
select trim('a' from 'aaa李政aaaa');
# lpad/rpad 左/右填充
/*
第一个参数表示需要填充的字符或字段
第二个参数表示填充后占据的列宽
第三个参数表示用什么内容填充
*/
select lpad('李政','19','a');
# replace 替换
/*
第一个参数,表示需要替换的字符串
第二个参数,表示需要替换的字符串的子串
第三个参数,表示子串替换后显示的内容
*/
select replace('小鸟','鸟','马');
# strcmp(参数1,参数2),比较两个字符大小
/*
如果参数1比参数2大,则返回1
如果参数1比参数2小,则返回-1
如果参数1与参数2相等,则返回0
*/
select strcmp('aaa','abb');
# left/right 截取子串(从左截取/从右截取)
select left('aaabbbsssdddggg',3);
# 数学函数
# abs 取绝对值
select abs(-2.4);
# round 四舍五入
select round(-1.55);
# 指定位数 保留有效数字的位数
select round(1.558,2);
# ceil 向上取整,返回 >= 该参数的最小整数
select ceil(1.15);
# floor 向下取整,返回 <= 该参数的最大整数
# truncate 截断
/*
第一个参数,表示要截断的数值
第二个参数,表示要截断小数点后几位
*/
select truncate(1.2345,2);
# mod 取余
select mod(10,3);
# 日期函数
# now() 返回当前系统日期+时间
select now();
# curdate() 返回当前系统日期,不包括时间
select curdate();
# curtime() 返回当前系统时间,不包括日期
select curtime();
# datediff() 返回两个日期之差
select datediff('2008-5-12','2022-3-8');
# year(日期) 年份
select year(now());
# dete_format() 将日期转换为指定格式的字符
select date_format(now(),'%y-%m-%d %H:%i:%s') as out_put;
# 案例:查询员工的名和入职日期(xx月xx日 xx年)
use myemployees;
select last_name,date_format(hiredate,'%y年%m月%d日')
from employees;
# str_to_date 将字符通过指定的格式转换为日期
# 案例:查询入职日期为1992-4-3的员工
use myemployees;
select * from employees
where hiredate = str_to_date('1992-4-3','%Y-%m-%d');