字符函数
length 取字节长度
select length(‘姓名’) from 员工表
concat 拼接字符串
select concat('姓','名') from 员工表
upper/lower 更改字符大小写
select upper('abc')
substr/substring 索引取字符串
select substr('阿珍爱上了阿强',1,2);
取值阿珍
第一个参数为索取起始位置,第二个参数为起始位置后面多少位
上述参数即为,从第一个字符开始的后面两位截取出来。
trim 去字符
select trim('a'fromm 'aaaaaaa张三aaaaaaaaa');
去掉所有的a
lpad/rpad 指定字符填充到字符左/右边
select lpad('字符传',填充的字符数,'填充的字符内容')
replace替换
select replace('等待替换的字符串','要替换的内容' ,'取代值');
例如:select replace('阿珍爱上了阿强,'阿强','胖虎');
将阿强替换成了胖虎。
数学函数
round 四舍五入
ceil/floor 向上/下取整
truncate 截断小数
select truncate(89.2341, 2);去小数点后两位
结果为89.23
日期函数
now 返回当前系统时间
select now()去当前的时间和日期select curdate();取当前日期select curtime();去当前时间
year month day hour minute second
年月日select day (now());
字符串日期转换
str_to_date 将字符日期转换日期格式
str_to_date('2012-3-20','%Y-%m-%d');
date_format 将日期转换成字符串
date_format('2019/6/6','%Y年%c%月%d日');
将日期转换成2019年6月6日的字符串格式
日期字符表:
| 格式符 | 意义 |
|---|---|
| %Y | 4位年份 |
| %y | 2位年份 |
| %m | 2位月份:01,02.. |
| %c | 1位月份:1,2,3 |
| %d | 日:01,02 |
| %H | 小时(24小时制 |
| %h | 小时(12小时制) |
| %i | 分钟 |
| %s | 秒 |
流程控制函数
if函数
- 语法
select if(判断条件,满足执行块,不满足执行块);
例如:select if(1>2, '对','错');结果执行的是’错’
case 函数
- 语法1
case 判断语句when 常量1 then 要显示的值1或语句1;when 常量2 then 药显示的值2或语句2;...else 要显示的值或语句end
- 语法2
case
when 条件1 then 值1或语句1
when 条件2 then 值2或语句2
else 值n或语句n
end
示例1
- 需求:查询员工的工资,要求:
部门号为30的,显示的工资为1.1倍
部门号为40的,显示的工资为1.2倍
部门号为50的,显示的工资为1.3倍
其他的部门显示原工资
select 工资,部门ID,
case 部门ID
when 30 then 工资*1.1
when 40 then 工资*1.2
when 50 then 工资*1.3
else 工资
end
from 工资表;
示例2
- 需求
如果工资>2W,显示A级别
如果工资>1.5W ,显示B级别
如果工资>1W, C
否则 D
代码如下:
select 工资,
case
when 工资>20000 then 'A'
when 工资>15000 then 'B'
when 工资>10000 then 'C'
else 'D'
end as 工资定级
from 工资表
计算函数
- 求和sum
- 平均值avg
- 最大值max
- 最小值min
- 计算个数(非空)count
- 特点
- sum avg 一般用与数值
- max min conut 可以用于所有值
- 所有函数忽略null值
- 可以搭配distinct去重
- 简单示例:
select sum(工资),avg(工资),max(工资),min(工资),count(工资) from 员工表 - 搭配distinct去重
select sum(distinct(部门))计算有多少部门 - 统计数据表有多少行数据
select conut(*) from 员工表 - 查询员工表中最大入职时间和最小输入事件的相差天数
select datediff(max(入职时间) ,min(入职时间));
datediff函数用来计算时间差,第一个参数减去第二个参数。 - 查询制造部员工个数
select conut(*) as 个数 from 员工表 where 部门 = '制造部';
