MySQL 函数

文章目录

MySQL 是一个流行的开源关系型数据库管理系统,它提供丰富的内置函数来进行常见的数据处理和计算操作。以下是一些常用的MySQL函数:

聚合函数:

AVG():计算某列的平均值
SUM():计算某列值的总和
COUNT():计算某列的行数
MAX():返回某列的最大值
MIN():返回某列的最小值

字符串函数:

CONCAT():连接两个或多个字符串
LENGTH():返回字符串的长度
SUBSTRING():返回字符串的子串
REPLACE():替换字符串中的子串
UPPER() / LOWER():将字符串转换为大写 / 小写

时间和日期函数:

NOW():返回当前日期和时间
DATE_FORMAT():将日期按指定格式进行格式化
YEAR() / MONTH() / DAY():提取日期中的年、月、日信息
TIMESTAMPDIFF():计算两个日期之间的差值

数学函数:

ROUND():对数值进行四舍五入
ABS():返回数值的绝对值
SQRT():返回数值的平方根
POWER():返回数值的乘方结果

条件函数:

IF():根据指定条件返回不同的值
CASE WHEN ... THEN ... ELSE ... END:条件判断语句

除了上述函数之外,MySQL还支持许多其他类型的函数,如条件判断函数、加密函数、位运算函数等。这些函数可以帮助用户对数据进行各种操作和计算,提高了数据库的灵活性和功能性。

字符串函数

常用函数:

函数 功能
CONCAT(s1, s2, ..., sn) 字符串拼接,将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个长度的字符串
REPLACE(column, source, replace) 替换字符串

使用示例:

plsql 复制代码
-- 拼接
SELECT CONCAT('Hello', 'World');
-- 小写
SELECT LOWER('Hello');
-- 大写
SELECT UPPER('Hello');
-- 左填充
SELECT LPAD('01', 5, '-');
-- 右填充
SELECT RPAD('01', 5, '-');
-- 去除空格
SELECT TRIM(' Hello World ');
-- 切片(起始索引为1)
SELECT SUBSTRING('Hello World', 1, 5);

数值函数

常见函数:

函数 功能
CEIL(x) 向上取整
FLOOR(x) 向下取整
MOD(x, y) 返回x/y的模
RAND() 返回0~1内的随机数
ROUND(x, y) 求参数x的四舍五入值,保留y位小数

日期函数

常用函数:

函数 功能
CURDATE() 返回当前日期
CURTIME() 返回当前时间
NOW() 返回当前日期和时间
YEAR(date) 获取指定date的年份
MONTH(date) 获取指定date的月份
DAY(date) 获取指定date的日期
DATE_ADD(date, INTERVAL expr type) 返回一个日期/时间值加上一个时间间隔expr后的时间值
DATEDIFF(date1, date2) 返回起始时间date1和结束时间date2之间的天数

例子:

plsql 复制代码
-- DATE_ADD
SELECT DATE_ADD(NOW(), INTERVAL 70 YEAR);

流程函数

常用函数:

函数 功能
IF(value, t, f) 如果value为true,则返回t,否则返回f
IFNULL(value1, value2) 如果value1不为空,返回value1,否则返回value2
CASE WHEN [ val1 ] THEN [ res1 ] ... ELSE [ default ] END 如果val1为true,返回res1,... 否则返回default默认值
CASE [ expr ] WHEN [ val1 ] THEN [ res1 ] ... ELSE [ default ] END 如果expr的值等于val1,返回res1,... 否则返回default默认值

例子:

plsql 复制代码
select
	name,
	(case when age > 30 then '中年' else '青年' end)
from employee;

select
	name,
	(case workaddress when '北京市' then '一线城市' 
   when '上海市' then '一线城市' else '二线城市' end) as '工作地址'
from employee;
相关推荐
百锦再13 分钟前
国产数据库替代MongoDB的技术实践:金仓数据库赋能浙江省人民医院信息化建设新展望
java·开发语言·数据库·mongodb·架构·eclipse·maven
程序边界13 分钟前
MongoDB迁移到KES实战全纪录(下):性能优化与实践总结
数据库·mongodb·性能优化
武子康14 分钟前
Java-160 MongoDB副本集部署实战 单机三实例/多机同法 10 分钟起集群 + 选举/读写/回滚全流程
java·数据库·sql·mongodb·性能优化·系统架构·nosql
这儿有一堆花15 分钟前
使用 Actix-web 开发高性能 Web 服务
前端·数据库
与衫1 小时前
SQL 调试不再靠猜:Gudu SQL Omni 让血缘分析一键可视化
数据库·sql
ZZZKKKRTSAE1 小时前
MySQL一篇速通
数据库·mysql·1024程序员节
阿祥~1 小时前
windows 安装 Redis
数据库·redis·缓存
是2的10次方啊2 小时前
图解MySQL索引:从二叉树到B+树的演进之路(基础篇)
mysql
蛋先生DX2 小时前
AI 友好的云开发 MySQL SDK 它来了!微信小程序能直连关系型数据库了
mysql·ai编程·小程序·云开发
21号 12 小时前
21.事务和锁(重点)
开发语言·数据库