本文汇总了 MySQL 的常用函数,包括字符串函数、日期时间函数、聚合函数、控制函数、数学函数等,最后会讲解如何创建自定义的 MySQL 函数。
ps: MySQL 不区分大小写
MySQL 字符串函数
- CONCAT – 将多个字符串合并为一个字符串
- LENGTH & CHAR_LENGTH – 获取字符串长度
- LEFT – 从左边开始截取指定长度的字符串
- REPLACE – 替换字符串中的子字符串
- SUBSTRING – 从指定位置提取字符串
- TRIM – 移除字符串
- FIND_IN_SET – 获取以逗号分隔的字符串的位置
- FORMAT – 格式化数字
MySQL 日期时间函数
- CURDATE – 获取当前日期
- UNIX_TIMESTAMP – 获取时间戳,也可加上日期参数,将日期转为时间戳
- FROM_UNIXTIME – UNIX 时间戳 转为日期 ,参数为时间戳
- DATEDIFF – 计算两个日期之间的天数
- DAY – 获取指定日期的天数
- DATE_ADD – 对指定日期进行加法运算,如 DATE_ADD(now(), INTERVAL 1 DAY)
- DATE_SUB – 对指定日期进行减法运算
- DATE_FORMAT – 日期格式化
- DAYNAME – 获取指定日期的星期,如 Saturday
- DAYOFWEEK – 获取指定日期在一周中的数字序号,例如如周六则返回 7
- EXTRACT – 提取日期的部分数据,例如 EXTRACT(DAY FROM date)
- NOW – 获取当前日期和时间
- MONTH – 获取指定日期的月份
- STR_TO_DATE – 根据指定的格式将字符串转换为日期和时间值
- SYSDATE – 获取当前系统的日期时间
- TIMEDIFF-
- TIMESTAMPDIFF –
- WEEK – 获取指定日期在一周中的数字序号,例如如周六则返回 6
- WEEKDAY – 返回日期的工作日索引,即0表示周一,1表示周二,…6表示周日
- YEAR – 获取指定日期的年份
MySQL 聚合函数
- AVG – 计算平均数
- COUNT – 计算表的行数
- INSTR – 返回子字符串在指定字符串第一次出现的位置
- SUM – 计算总和
- MIN – 获取最小值
- MAX – 获取最大值
- GROUP_CONCAT – 使用逗号分隔符连接字符串,并可设置规则
MySQL 控制函数
主要使用在存储过程以及自定义函数中
- CASE
- IF
- IFNULL
- NULLIF
MYSQL 数学函数
- ABS – 返回一个数字的绝对值
- CEIL – 向上取整
- FLOOR – 向下取整
- MOD – 取余数,例如 10 % 3
- ROUND – 四舍五入
- TRUNCATE – 将数字截断为指定的小数位数
其他函数
- LAST_INSERT_ID – 获取上次插入记录的最后生成的序列号
- CAST – 将任何值转换为指定的数据类型
- ISNULL – 如果值为 NULL,则返回1,否则返回0
- COALESCE – 返回第一个非 NULL 的值,如果所有数据都为 NULL,则返回 NULL
- GREATEST & LEAST – 获取两个或多个字段的最大值和最小值
自定义函数
MySQL 5.0开始支持函数,函数是存在数据库中的一段 sql 集合,调用函数可以减少很多工作量,可以减少数据在数据库和应用服务器上的传输、提高数据处理的效率。
创建函数语法:
CREATE FUNCTION fn_name(func_parameter[,…])
RETURNS type
[characteristic…]
routine_body
示例:
#创建一个函数
DELIMITER $$ -- 定界符
-- 开始创建函数
CREATE FUNCTION user_main_fn(v_id INT)
RETURNS VARCHAR(50)
BEGIN
-- 定义变量
DECLARE v_userName VARCHAR(50);
-- 给定义的变量赋值
SELECT f_userName INTO v_userName FROM t_user_main
WHERE f_userId = v_id;
-- 返回函数处理结果
RETURN v_userName;
END $$ -- 函数创建定界符
DELIMITER;
# 使用自定义函数
SELECT user_main_fn(1) FROM DUAL;
# 删除函数 DROP FUNCTION [IF EXISTS] fn_name;
# 删除函数user_main_fn
drop function user_main_fn;