学习自b站骆昊 jackfrued 老师的网课以及黑马网课。
字符串函数
函数 | 说明 |
---|---|
CONCAT(s1, s2, sn) | 字符串拼接 |
LOWER(str) | 转小写 |
UPPER(str) | 转大写 |
LPAD(str, n, pad) | 用 pad 对 str 左边n个字符长度进行填充 |
RPAD(str, n, pad) | 用 pad 对 str 右边n个字符长度进行填充 |
TRIM(str) | 去掉头尾的空格 |
SUBSTRING(str, start, len) | 返回 str 从指定位置 start 开始 len 长度的子字符串(从0开始) |
如:所有员工的工号都必须是五位数,不足的话在左端补0:
update 表名 set 字段名 = lpad(字段名,5,'0');
数值函数
函数 | 说明 |
---|---|
CEIL(x) | 向上取整 |
floor(x) | 向下取整 |
mod(x,y) | 返回x/y的模 |
rand() | 返回0~1内的随机数 |
round(x,y) | 返回x四舍五入值,保留y位小数 |
例:生成6位验证码。
首先靠随机数生成,然后*1000000并四舍五入,然后还要考虑开头为0的情况,因此不足六位补0。
select lpad(round(rand()*1000000,0),6,'0');
日期函数
函数 | 说明 |
---|---|
curdate() | 返回当前日期 |
curtime() | 返回当前时间 |
now() | 返回当前日期和时间 |
year(date) | |
month(date) | |
day(date) | |
date_add(date, interval expr type) | date 加时间间隔 expr,可以是年月日时间,如interval 70 day |
datediff(date1, date2) | 求两个日期相差天数(1-2) |
流程函数
函数 | 说明 |
---|---|
if(value, t, f) | true 返回t, false 返回f |
ifnull(value1, value2) | value1 为 null 返回 value1,空返回 value2 |
case when val1 then res1 else default end | switch case |
case expr when val1 then res1 else default end | 表达式形式的 switch case |
(case workaddress when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end) as '工作地';
(case score when score=100 then '满分' when score>=90 then '优秀' else '懒得写了' end) as '成绩所在段';