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;
相关推荐
苹果醋310 分钟前
2020重新出发,MySql基础,MySql表数据操作
java·运维·spring boot·mysql·nginx
小蜗牛慢慢爬行12 分钟前
如何在 Spring Boot 微服务中设置和管理多个数据库
java·数据库·spring boot·后端·微服务·架构·hibernate
hanbarger15 分钟前
nosql,Redis,minio,elasticsearch
数据库·redis·nosql
微服务 spring cloud37 分钟前
配置PostgreSQL用于集成测试的步骤
数据库·postgresql·集成测试
先睡39 分钟前
MySQL的架构设计和设计模式
数据库·mysql·设计模式
弗罗里达老大爷41 分钟前
Redis
数据库·redis·缓存
仰望大佬0071 小时前
Avalonia实例实战五:Carousel自动轮播图
数据库·microsoft·c#
学不透java不改名1 小时前
sqlalchemy连接dm8 get_columns BIGINT VARCHAR字段不显示
数据库
一只路过的猫咪1 小时前
thinkphp6使用MongoDB多个数据,聚合查询的坑
数据库·mongodb