当前位置: 首页 > news >正文

MySQL函数

函数

MySQL函数与其存储过程类似,是一系列完成某种功能的SQL语句。函数一旦定义后,与过程一样是存储在MySQL的服务器上。调用函数就是一次性执行这些语句。所以函数可以降低语句重复。

MySQL本身提供了内置函数,这些函数的存在给我们日常的开发和数据操作带来了很大的便利,MySQL提供的常用函数包括聚合函数,字符串函数,日期时间函数,控制流函数等。

MySQL除了可以使用它提供的内置函数外,我们亦可以按照我们的要求来实现我们自己的功能,可是这个函数式系统不能提供的因为这中需求的不确定性。因此我们需要自己来解决这种需求。还好MySQL设计的扩展性给了我们这个机会,我们可以通过自定义函数的功能解决这个问题。

函数名称作用
abs绝对值
mod求余数
sqrt求二次方根
ceil和ceiling都是小于参数的最小整数,向上取整
floor向下取整,返回值转换为bigint
rand生成0-1的之间的随机数
round四舍五入
sign返回带参数的符号
pow和 power都是所传代数的次方的结果值
sin求正弦值
asin求反正弦值,
cos求余弦值
acos求反余弦值
tan求正切值
atan求反正切值
cot求余切值

abs:求绝对值

函数abs(x)返回x的绝对值,正数的绝对值时本身,负数的绝对值时相反数,0的绝对值是0

select abs(5),abs(1.1),abs(-3.3),abs(0);

在这里插入图片描述

sqrt:求二次方根(开方)

函数SQRT(x)返回非负数x的二次方根,负数没有平方根,返回结果为null

select sqrt(25),sqrt(120),sqrt(-9);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MdxwTPsy-1679467513331)(MySQL函数.assets/image-20220923154424057.png)]

mod:求余数

函数mod(x,y)返回x被y除后的余数,mod()对于带小数部分的数据也会起作用,返回除法算后的余数

select mod(63,8),mod (120,10),mod(15.5,3);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HyH3wzZz-1679467513331)(MySQL函数.assets/image-20220923154835020.png)]

ceil和ceiling:向上取整

函数ceil和ceiling的意义是相同的,返回不小于x的最小整数值,返回值转换为一个bigint

select ceil(-2.5),ceil(3.3),ceiling(2.5);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oe8yCdAg-1679467513332)(MySQL函数.assets/image-20220923155130131.png)]

floor:向下取整

函数floor(x)返回小于x的最大整数值

select floor(5),floor(5.66),floor(-4),floor(-4.66);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j4UmjHe9-1679467513332)(MySQL函数.assets/image-20220923155403289.png)]

rand:生成一个随机数

生成一个0-1之间的随机数

select rand(),rand(),rand();

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sCdSDOy9-1679467513332)(MySQL函数.assets/image-20220923155616569.png)]

round:四舍五入

返回最近于参数x的整数,round(x)函数对参数x进行四舍五入的操作,

select round(-6.6),round(-8.44),round(3.44);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zgtU85zJ-1679467513332)(MySQL函数.assets/image-20220923155847344.png)]

sign:返回参数的符号

返回参数的符号x的值为负数,零和正数时分别返回-1,0,1

select sign(-6),sign(0),sign(34);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ef06bKCn-1679467513333)(MySQL函数.assets/image-20220923160127912.png)]

pow和 power:次方函数

函数用于计算x的y次方

select pow(5,-2),pow(10,3),power(4,3),pow(100,0),power(6,-3);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3bobDcKJ-1679467513333)(MySQL函数.assets/image-20220923160615569.png)]

sin:正弦函数

sin(x)返回x的正弦值,x值为弧度值

select sin(1),sin(0.5*pi()),pi();

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JFaTisfi-1679467513333)(MySQL函数.assets/image-20220923160946225.png)]

asin:求反正弦值,

select asin(30),asin(25);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vo35IU5G-1679467513334)(MySQL函数.assets/image-20220923161226836.png)]

MySQL字符串函数

函数名称作用
length计算字符串长度函数,
concat字符串拼接
insert替换字符串函数
lower将字符串中的字母转换为小写
upper将字符串中的字母转换为大写
left从左侧截取字符串,返回字符串左边的若干个字符
right从右侧截取字符串,返回字符串右边的若干个字符
trim删除字符串左右两侧的空格
replace字符串替换函数,返回替换后的新字符串
substr和substring截取字符串
reverse字符串反转

length:返回字符串长度

返回值为字符串的字节长度,unicode码为utf8,为万国码,变长字符出,一个汉字占3个字节,一个数据或者字母占一个字节

select length('helloworld');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-crBFXETZ-1679467513334)(MySQL函数.assets/image-20220923162533019.png)]

concat:字符串拼接

select concat('张三','java'),concat('李','四','java');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HAMJhzOA-1679467513334)(MySQL函数.assets/image-20220923162852991.png)]

insert:替换字符串

insert(s1,x,len,s2)返回字符串s1,子字符串起始于x位置,并且用len个字符长的字符串代替为s2

select insert('java',2,4,'**')As col1,insert('shell',-1,4,'**')as  col2,insert('张三学习java',3,20,'**')as col3;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZNzgzUGh-1679467513335)(MySQL函数.assets/image-20220923162940629.png)]

lower:将字母转换为小写

lower(str)可以将字符串str中的字母全部转换为小写

select lower('张三JAVAZHANGSAN');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g2jAJjHu-1679467513335)(MySQL函数.assets/image-20220923163402463.png)]

upper:将字母转换为大写

upper(str)可以将字符串str中的字母字符全部转换为大写

select upper('张三javazhangsan');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GXqHz2t6-1679467513335)(MySQL函数.assets/image-20220923163517990.png)]

left:从左侧截取字符串

select left('张三java',2),left('李四java',4),left('王五',-1);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MPSsvQaq-1679467513336)(MySQL函数.assets/image-20220923170220693.png)]

right:从右侧截取字符串

select right('张三java',2),right('李四java',4),right('王五',-1);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EF3QRS51-1679467513336)(MySQL函数.assets/image-20220923170301064.png)]

trim:删除字符串两侧空格

select '   [      zhagnsan      ]    ',concat('[ ,李四 ]'),trim( '   [ zhagnsan ]    ');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M2Lr1Bk9-1679467513336)(MySQL函数.assets/image-20220923170532433.png)]

substr和substring截取字符串

select substr('javaScipt',3)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OQCbcxVj-1679467513337)(MySQL函数.assets/image-20220923170710775.png)]

select substr('javaScipt',3,2)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dOWhcNu5-1679467513337)(MySQL函数.assets/image-20220923170834961.png)]

reverse:反转字符串

select reverse('张三java')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I3CfpmVg-1679467513337)(MySQL函数.assets/image-20220923170940648.png)]

MySQL日期和时间函数

函数名称作 用
curdate 和 current_date两个函数作用相同,返回当前系统的日期值
curtime 和 current_time两个函数作用相同,返回当前系统的时间值
now 和 sysdate两个函数作用相同,返回当前系统的日期和时间值
unix_timestamp获取UNIX时间戳函数,返回一个以 UNIX 时间戳为基础的无符号整数
from_unixtime将 UNIX 时间戳转换为时间格式,与UNIX_TIMESTAMP互为反函数
month获取指定日期中的月份
monthname获取指定日期中的月份英文名称
dayname获取指定曰期对应的星期几的英文名称
dayofweek获取指定日期是一周中是第几天,返回值范围是1~7,1=周日
week获取指定日期是一年中的第几周,返回值的范围是否为 0〜52 或 1〜53
dayofyear获取指定曰期是一年中的第几天,返回值范围是1~366
dayofmonth获取指定日期是一个月中是第几天,返回值范围是1~31
year获取年份,返回值范围是 1970〜2069
time_to_sec将时间参数转换为秒数
sec_to_time将秒数转换为时间,与TIME_TO_SEC 互为反函数
date_add 和 adddate两个函数功能相同,都是向日期添加指定的时间间隔
date_sub 和 subdate两个函数功能相同,都是向日期减去指定的时间间隔
addtime时间加法运算,在原始时间上添加指定的时间
subtime时间减法运算,在原始时间上减去指定的时间
datediff获取两个日期之间间隔,返回参数 1 减去参数 2 的值
date_format格式化指定的日期,根据参数返回指定格式的值
weekday获取指定日期在一周内的对应的工作日索引

curdate 和 current_date:返回当前系统的日期值

select curdate(),current_date,current_date+1;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dbsbtx9q-1679467513338)(MySQL函数.assets/image-20220924105200282.png)]

curtime 和 current_time:返回系统当前时间

select curtime(),current_time,current_time+1;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rwkmulGK-1679467513338)(MySQL函数.assets/image-20220924105408355.png)]

now 和 sysdate:获取当前时间日期

select now(),sysdate();

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1wRCiEeL-1679467513339)(MySQL函数.assets/image-20220924105509084.png)]

unix_timestamp:获取unix时间戳

select unix_timestamp();

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G0BDxryc-1679467513339)(MySQL函数.assets/image-20220924105713044.png)]

from_unixtime:时间戳转日期

格式说明
%M月名字
%W星期名字
%D有英语前缀的月份和日期
%Y年,数字,4位
%y年,数字,2位
%d月份的天数,(00-31)
%e月份的天数,(0-31)
%a缩写的星期名字
%m月,数字(01-12)
%c月,数字(1-12)
%b缩写的月份名字(Jan-Dec)
%j一年中的天数(001-366)
%H小时(00-23)
%h小时(01-12)
%l(L的小写)小时(1-12)
%k小时(0-23)
%I(i的大写)小时(01-12)
%i分钟,数字(00-59)
%S秒(00-59)
%s秒(00-59)
%r时间,12小时(hh:mm:ss [AP]M)
%T时间,24小时(hh:mm:ss)
%pAM或者PM
%U星期(0-52)星期天是星期第一天
%u星期(0-52)星期一是星期的第一天
%%输出%
select from_unixtime(1663989244),from_unixtime(1663989244,'%Y-%m-%d %H:%i:%s');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xkUjD8hb-1679467513339)(MySQL函数.assets/image-20220924111426674.png)]

month:指定日期的月份

select month('2022-9-24'),month(now());

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U3TRACNd-1679467513340)(MySQL函数.assets/image-20220924111654916.png)]

monthname:获取指定日期月份的英文名称

select monthname('2022-9-24'),monthname(now());

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qCREpM7U-1679467513340)(MySQL函数.assets/image-20220924111806380.png)]

dayname:获取指定日期的星期名称

select now(),dayname(now());

​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-chqPAnaN-1679467513340)(MySQL函数.assets/image-20220924112006619.png)]

dayofweek:获取日期对应的周索引

1表示周天,2表示周一,。。。。

select now(),dayofweek('2022-9-25');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pobri3KN-1679467513340)(MySQL函数.assets/image-20220924112405251.png)]

week:获取指定日期是一年中的第几周

模式一周的第一天范围
0星期日0-53
1星期一0-53
2星期日1-53
3星期一1-53
4星期日0-53
5星期一0-53
6星期日1-53
7星期一1-53
select now(),week('2022-12-31');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zO7lwgEM-1679467513341)(MySQL函数.assets/image-20220924112816292.png)]

dayofyear:获取指定曰期是一年中的位置

select now(),dayofyear(now()),dayofyear('2020-12-31');

在这里插入图片描述

dayofmonth:获取指定日期在一个月的位置

select now(),dayofmonth(now()),dayofmonth('2020-12-31');

在这里插入图片描述

year:获取年份

select now(),year(now()),year('2020-12-31');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WhXYMF0F-1679467513341)(MySQL函数.assets/image-20220924113730723.png)]

time_to_sec:将时间转换位秒值

select time_to_sec('5:5:5'),now(),time_to_sec(now());

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ik4uaRM8-1679467513342)(MySQL函数.assets/image-20220924114042818.png)]

sec_to_time:将秒转换为时间格式

select sec_to_time('18305'),now(),sec_to_time('42004');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lHefYe6U-1679467513342)(MySQL函数.assets/image-20220924114157252.png)]

date_add 和 adddate:向日期添加指定时间间隔

select date_add('2022-9-21',interval 365 day );

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7XwurT3l-1679467513342)(MySQL函数.assets/image-20220924114514683.png)]

date_sub 和 subdate:日期减法运算

select date_sub('2022-9-21',interval 365 day );

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-umN6Mb6R-1679467513342)(MySQL函数.assets/image-20220924114627260.png)]

addtime:时间加法运算

select addtime('2022-9-24 11:47:36','0:1:1');

v!](https://img-blog.csdnimg.cn/174e5787379642459671a0bfc40bda60.png)

subtime:时间减法运算

select subtime('2022-9-24 11:47:36','0:1:1');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3edAVuf0-1679467513343)(MySQL函数.assets/image-20220924114926291.png)]

datediff:获取两个时间的时间间隔

select datediff('2022-9-24','2019-12-26');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p2Dfwj5c-1679467513343)(MySQL函数.assets/image-20220924115150427.png)]

date_format:格式化指定的日期

select date_format('2022-9-24','%Y年%m月%d日');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XXrU6K6M-1679467513343)(MySQL函数.assets/image-20220924115432611.png)]

weekday:获取指定日期在一周内的索引位置

select now(),weekday(now());

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YyC9ZKjQ-1679467513344)(MySQL函数.assets/image-20220924115559965.png)]

MySQL聚合函数

函数名称作用
max查询指定列的最大值
min查询指定列的最小值
count统计查询结果的行数
sum求和,返回指定列的总和
avg求平均值,返回指定列数据的平均值

MySQL流程控制函数

函数名称作用
if判断,流程控制
ifnull判断是否为空
case搜索语句

if:判断

if(expr,v1,v2)

当expr为真是返回v1的值,为假返回v2的值

select if(1<2,1,0),if(1>5,'√','×');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UyQyviNP-1679467513344)(MySQL函数.assets/image-20220926103001342.png)]

ifnull:判断是否为空

ifnull(v1,v2):当v1为空则放回v2,当v1有值则放回v1

select ifnull('非空','为空'),ifnull(null,'空'),ifnull('空',null),ifnull(null,null);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0PpenBrs-1679467513344)(MySQL函数.assets/image-20220926103358296.png)]

case:搜索语句

方式1:

case <表示式>

​ when<值1> then<操作>

​ 。。。

​ else<操作>

end case;

方式2:

case

​ when<值1> then<命令>

​ 。。。

​ else commands

end case;

create table t_stu(id int auto_increment comment '学号',name varchar(20) comment '姓名',sex tinyint comment '性别,0:未知,1:男,2:女',primary key (id)
)charset = utf8mb4 collate = utf8mb4_bin engine = InnoDB;insert into t_stu(name,sex) values ('张三',1),('李四',2),('王五',1);
insert into t_stu(name, sex) values ('赵六',3),('唐七',0);select id, name, sex from t_stu;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SujGqAly-1679467513345)(MySQL函数.assets/image-20220926105155200.png)]

需求:查询所有学生信息,输出姓名,性别(男,女,未知)

select name '名字', (case sexwhen 1then '男'when 2then '女'else '未知' end) '性别' from t_stu;

其他函数

函数名称作用
version数据库版本号
database当前数据库
user当前连接用户名
password返回字符串密码形式
md5返回字符串的md5数据
select version();
select database();
select user();
select password('123456');
select md5('zhangsan123456lisiwangwu123456')
http://www.lryc.cn/news/44292.html

相关文章:

  • 【Linux系统】开发工具(下) {调试器gdb,自动化构建工具make/Makefile,多文件编译,代码管理平台git}
  • 线性代数——行列式
  • Spring注解-Spring-boot-SpingAOP
  • 使用Shell传参解决DataPhin中PySpark不支持中文的问题
  • 【CDH】cloudera manger 如何开启Debug 日志调试模式
  • SQL Server 用户授权与回收
  • 电脑出现乱码的原因以及解决方法
  • 网络工程师笔记
  • linux用户添加用户组与目录切换用户组的操作记录
  • 在CentOS 7上使用二进制文件安装单节点Kubernetes的详细步骤:
  • iCollections for mac 8.0.6.80608 保持Mac桌面的整洁
  • 学习HM微博项目第8天
  • 十五、存储过程与函数
  • php实现助记词转TRX,ETH 私钥和钱包地址
  • 浅析可观测系统中sdk的不同引入方式的利与弊
  • Google Earth导入经纬高(txt文件)
  • Unity客户端开发工程师的进阶之路
  • 2023年全国最新高校辅导员精选真题及答案34
  • chatGPT身份指令
  • 基于springboot实现私人健身与教练预约管理系统【源码+论文】分享
  • 网络技术领域术语大全,含中英文及缩写,强烈建议收藏!
  • C++源码剖析——vector和array
  • 学习linux编程(一)
  • pt-query-digest_详细使用方法
  • 基于MATLAB编程的萤火虫FA优化BP神经网络的回归分析
  • leetcode 消失的数字(面试题)
  • Spring入门篇6 --- AOP
  • linux 配置java环境
  • 分布式事务基础入门
  • 白盒测试究竟怎么做