一、字符串相关函数
- CONCAT(字符串拼接)
- SUBSTR(截取字符串)
- LENGTH(返回字符串长度)
- INSTR(返回某个字符在字符串中第一次出现的下标,注意:mysql中的下标从1开始)
- LPAD(以指定的字符在字符串左边填充至指定长度)
- RPAD(以指定的字符在字符串右边填充至指定长度)
- TRIM(删除字符串起始位置的字符)
- REPLACE(根据指定的字符,替换字符串中的字符)
使用示例
#concat需要三个或二个参数,将第一个参数和第三个参数使用第二个参数拼接
select concat('勒布朗','-','詹姆斯'); # 结果:勒布朗-詹姆斯
#SUBSTR使用两个参数,将截取指定字符串下标以后的值
select SUBSTR('HelloWorld',6); #结果:World
#SUBSTR使用三个参数,将从第二个参数下标开始截取,截取第三个参数的长度
select SUBSTR('HelloWorld',1,5); #结果:Hello
# 返回字符长度,mysql中一个字符等于三个字节
select length('周芷若');#结果:9
#返回某个字符在字符串中第一次出现的下标,注意:mysql中的下标从1开始
select instr('HelloWorld','W'); #结果:6
# LPAD(以指定的字符在字符串左边填充至指定长度)
select LPAD('Hello',10,'*'); #结果:*****Hello
# LPAD(以指定的字符在字符串右边填充至指定长度)
select RPAD('Hello',10,'*'); #结果:Hello*****
#TRIM(删除字符串起始位置的字符)
select trim('H' from 'HelloWorld') ; #结果:elloWorld
#REPLACE(根据指定的字符,替换字符串中的字符)
select replace('abcd','b','m'); #结果:amcd
二、数学相关函数
- round(四舍五入)
- ceil(向上取整)
- floor(向下取整)
- truncate(截断,通常用于小数点后保留的位数)
- mod(取余)
使用示例
# 四舍五入
select round(1.765); # 如果只写一个参数,则只保留整数 结果:2
select round(1.765,2); # 如果写两个参数,则只保留两位小数 结果:1.77
# 向上取整
select ceil(2.8); # 3
# 向下取整
select floor(2.8); # 2
#截取小数点后两位
select truncate(2.8946,2) ;#2.89
#取余
select mod(10,3) #1
三、日期相关函数
- now (返回当前日期+时间)
- curdate(返回当前日期)
- curtime (返回当前时间)
- year(获取一个日期中的年份)
- month(获取一个日期中的月份)
- str_to_date(将日期字符串转为日期型)
- date_format(将日期转为指定格式的字符串)
- datediff(查询两个日期之间相差天数)
日期格式化相关的占位符
使用示例
select now();#2020-11-18 09:48:01
select curdate(); #2020-11-18
select curtime(); #09:48:01
select year(curdate()); #2020
select str_to_date('12-27-1999','%m-%d-%Y'); #1999-12-27
#将日期格式化为字符串
select date_format(curdate(),'%d/%m/%Y'); #18/11/2020
# 查询两个日期之间相差天数
select datediff(curdate(),'1999-12-27')
四、流程控制函数
- if (类似于三元运算符)
- else (类似switch case…)
使用示例
select if(10>5,'大于','小于'); # 大于
/**
case函数使用1 : 这种通常用于等值判断
case 变量
when 常量 then 表达式或值
when 常量 then 表达式或值
when 常量 then 表达式或值
when 常量 then 表达式或值
else 表达式或值
end as xxx
*/
select department_id,salary 原始工资,
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;
/**
case函数使用2 :这种通常用于非等值判断
case
when 条件1 then 显示的值或语句
when 条件2 then 显示的值或语句
when 条件3 then 显示的值或语句
else 显示的值或语句
end
*/
select last_name,salary 原始工资,
case
when salary > 20000 then 'A'
when salary > 15000 then 'B'
when salary > 10000 then 'C'
else 'D'
end as '工资等级'
from employees;