函数好处:
隐藏实现功能。
提高代码的重用性。
函数名(实参列表)
分类
单行函数
字符函数、数学函数、日期函数、其他函数、流程控制函数
分组函数:功能做统计,又称聚合函数、统计函数、组函数
字符函数:
length 获取参数值的字节个数
# 3 字母 1字节
SELECT LENGTH('kkk');
# 6 中文 utf8 3字节 / GBK 2字节
SELECT LENGTH('看kkk');
# 查看当前数据库 字符集
SHOW VARIABLES LIKE '%char%';
upper 大写、 lower 小写
# 函数可以嵌套使用 TANGzengping
SELECT CONCAT(UPPER(firstname),LOWER(lastname)) AS fullname FROM USER;
substring(或者简写 substr)
# zengping 第6位开始,截取后续所有。
SELECT SUBSTR('i am zengping',6);
# zeng 第6位开始,截取4个字符长度 注意:字符与字节不一样,只有length函数是字节。
SELECT SUBSTR('i am zengping',6,4);
instr返回子串第一次出现的索引,如找不到返回0
# 3 返回第一个匹配的字符的下标
SELECT INSTR('i am zengping,i am king','am');
# 0 找不到返回0
SELECT INSTR('i am zengping,i am king','ami');
trim去前后空格 或 特定字符
# a a
SELECT TRIM(' a a ');
# kak
SELECT TRIM('a' FROM 'aaakakaaa');
# aaakakaaa
SELECT TRIM('a' FROM ' aaakakaaa ');
lpad/rpad 用指定的字符实现左/右填充到指定长度
# *abcd
SELECT LPAD('abcd',5,'*');
# abc
SELECT LPAD('abcd',3,'*');
replace 替换
# abbbd
SELECT REPLACE('abccd','c','b');
数学函数
round:四舍五入
#1
SELECT ROUND(1.45);
#-1
SELECT ROUND(-1.45);
#1.46
SELECT ROUND(1.457,2);
cell:向上取整,返回>=该参数的最小整数
#1
SELECT CEIL(1.00);
#2
SELECT CEIL(1.01);
#-1
SELECT CEIL(-1.01);
floor:向下取整,返回<=该参数的最大整数
truncate:截断
#1.6
SELECT TRUNCATE(1.65,1);
mod:取余
#1
SELECT MOD(10,3);
#-1
SELECT MOD(-10,3);
#1
SELECT MOD(10,-3);
日期函数
#当前日期与时间2020-11-22 16:45:04
SELECT NOW();
#当前日期2020-11-22
SELECT CURDATE();
#当前时间16:44:15
SELECT CURTIME();
#2020
SELECT YEAR(NOW());
#1998
SELECT YEAR('1998-01-01');
SELECT YEAR(日期字段);
#年、月、日、时、分、秒同理
str_to_date:将字符通过指定的格式转换成日期
#其中%Y 代表4位的年份
#其中%y 代表2位的年份
#其中%m 代表月份 01、02、03
#其中%c 代表月份 1、2、3
#其中%d 代表日 01、02
#其中%H 代表24小时制
#其中%h 代表12小时制
#其中%i 代表分钟 00-59
#其中%s 代表秒 00-59
#1998-03-02
SELECT STR_TO_DATE('1998-3-2','%Y-%c-%d');
SELECT STR_TO_DATE('3-2 1998','%c-%d %Y');
date_format:将日期转成字符串
#20年11月22日
SELECT DATE_FORMAT(NOW(),'%y年%m月%d日');
其他函数
SELECT VERSION();
SELECT DATABASE();
SELECT USER();
流程控制函数
if函数:if else效果
SELECT IF(10<5,'大','小');
case函数:switch case的效果
#2
SELECT CASE 10<5 WHEN 1 THEN 1 WHEN 0 THEN 2 ELSE 3 END;
case函数:多重if
#2
SELECT CASE WHEN 1=2 THEN 1 WHEN 1=1 THEN 2 ELSE 3 END;