本文汇总了 MySQL 的常用函数,包括字符串函数、日期时间函数、聚合函数、控制函数、数学函数等,最后会讲解如何创建自定义的 MySQL 函数。

ps: MySQL 不区分大小写

MySQL 字符串函数

  1. CONCAT – 将多个字符串合并为一个字符串
  2. LENGTH & CHAR_LENGTH – 获取字符串长度
  3. LEFT – 从左边开始截取指定长度的字符串
  4. REPLACE – 替换字符串中的子字符串
  5. SUBSTRING – 从指定位置提取字符串
  6. TRIM – 移除字符串
  7. FIND_IN_SET – 获取以逗号分隔的字符串的位置
  8. FORMAT – 格式化数字

MySQL 日期时间函数

  1. CURDATE – 获取当前日期
  2. UNIX_TIMESTAMP – 获取时间戳,也可加上日期参数,将日期转为时间戳
  3. FROM_UNIXTIME – UNIX 时间戳 转为日期 ,参数为时间戳
  4. DATEDIFF – 计算两个日期之间的天数
  5. DAY – 获取指定日期的天数
  6. DATE_ADD – 对指定日期进行加法运算,如 DATE_ADD(now(), INTERVAL 1 DAY)
  7. DATE_SUB – 对指定日期进行减法运算
  8. DATE_FORMAT – 日期格式化
  9. DAYNAME – 获取指定日期的星期,如 Saturday
  10. DAYOFWEEK – 获取指定日期在一周中的数字序号,例如如周六则返回 7
  11. EXTRACT – 提取日期的部分数据,例如 EXTRACT(DAY FROM date)
  12. NOW – 获取当前日期和时间
  13. MONTH – 获取指定日期的月份
  14. STR_TO_DATE – 根据指定的格式将字符串转换为日期和时间值
  15. SYSDATE – 获取当前系统的日期时间
  16. TIMEDIFF-
  17. TIMESTAMPDIFF –
  18. WEEK – 获取指定日期在一周中的数字序号,例如如周六则返回 6
  19. WEEKDAY – 返回日期的工作日索引,即0表示周一,1表示周二,…6表示周日
  20. YEAR – 获取指定日期的年份

MySQL 聚合函数

  1. AVG – 计算平均数
  2. COUNT – 计算表的行数
  3. INSTR – 返回子字符串在指定字符串第一次出现的位置
  4. SUM – 计算总和
  5. MIN – 获取最小值
  6. MAX – 获取最大值
  7. GROUP_CONCAT – 使用逗号分隔符连接字符串,并可设置规则

MySQL 控制函数

主要使用在存储过程以及自定义函数中

  1. CASE
  2. IF
  3. IFNULL
  4. NULLIF

MYSQL 数学函数

  1. ABS – 返回一个数字的绝对值
  2. CEIL – 向上取整
  3. FLOOR – 向下取整
  4. MOD – 取余数,例如 10 % 3
  5. ROUND – 四舍五入
  6. TRUNCATE – 将数字截断为指定的小数位数

其他函数

  1. LAST_INSERT_ID – 获取上次插入记录的最后生成的序列号
  2. CAST – 将任何值转换为指定的数据类型
  3. ISNULL – 如果值为 NULL,则返回1,否则返回0
  4. COALESCE – 返回第一个非 NULL 的值,如果所有数据都为 NULL,则返回 NULL
  5. 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;

参考资料:https://www.mysqltutorial.org/mysql-functions.aspx