MySQL中函数讲解

目录

一、MySQL函数介绍

二、MySQL函数分类

1、字符串函数详解

1)length(str)实例

2)concat(str1,str2,...)实例

3)upper(str)、lower(str)实例

4)substring(str,start,len)实例,

5)insert(str,start,len,'replace') 该函数用于查找包含字串的字段

6)trim(str)实例

7)lpad(str,len,填充字符)、rpad(str,len,填充字符),左填充右填充,直到长度达到len

8)replace(str,子串,另一个字符串)实例

2、数学函数

1)round(x,保留位数)函数

2)ceil(x)函数

3)floor(x)函数

4)truncate(x,D)函数

5)mod(被除数,除数)函数

6)pow(x,D)函数

3、日期函数

1)时间与日期函数含义

2)now()函数

3)curdate()函数

4)curtime()函数

5)获取日期和时间中的年、月、日、时、分、秒

6)weekofyear()函数

7)quarter()函数

8)str_to_date()函数

9)date_format()函数

10)date_add(日期,interval num 时间)函数

11)last_day()函数

12)datediff(end_date,start_date)函数

13)timestampdiff(unit,start_date,end_date)函数

4、流程控制函数

1)if(expr,v1,v2)函数

2)ifnull()函数

3)case…when函数的三种用法

5、系统信息函数

1)version()函数

2)connection_id()函数

3)processlist

4)database(),schema()函数

5)user(),current_user(),system_user()函数

6)charset()函数

7)collation()函数

6、聚合函数

1)功能与分类

2)聚合函数的传入参数,数据类型

7、其他函数

1)FORMAT(x,y)函数

2)INET_ATON(ip)函数

3)INET_NTOA(NUM)函数

4)password(str)函数

5)md5(str)函数

6)encode(str,pswd_str)、decode(加密的字符串,pswd_str)函数

一、MySQL函数介绍

        MySQL数据库中提供了很丰富的函数。mysql函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数,可以简化用户的操作。

二、MySQL函数分类

1、字符串函数详解

函数名称函数的用法
length(str)该函数用于计算字段长度
concat(str1,str2,...)该函数用于字段的连接
upper(str)、lower(str)该函数用于字符串大小写的转换,顾名思义upper就是大写的转换,lower则是小写的转换
substr(str,start,len)该函数用于字符串的截取,start表示截取开始的位置,注意这里的位置从1开始,len则表示截取的长度
insert(str,start,length,'replace‘)该函数指定替换内容
trim(str)该函数用于去除字符串两端的空格内容
lpad(str,len,填充字符)、rpad(str,len,填充字符)看到pad就联想到padding,顾名思义填充,左填充,右填充,直到长度达到len的长度
replace(str,指定替换的字串,替换内容)该函数用于指定去替换字符串内容

1)length(str)实例

-- length(str)	该函数用于计算字段长度
select length('Only I known you!') as '我想你';

2)concat(str1,str2,...)实例

-- concat(str1,str2,...)	该函数用于字段的连接
select concat('你说你爱我!', '尊嘟假嘟!') as '张万森';

3)upper(str)、lower(str)实例

-- upper(str)、lower(str)	该函数用于字符串大小写的转换,顾名思义upper就是大写的转换,lower则是小写的转换
select upper('i love you sjw!') as 'yp一直没变';

4)substring(str,start,len)实例,

-- substring(str,start,len)	该函数用于字符串的截取,start表示截取开始的位置,len则表示截取的长度
select substring('你不会忘记我对吧!',4,3) as 'sjw';

 

5)insert(str,start,len,'replace') 该函数用于查找包含字串的字段

-- insert(str,start,len,'replace')	该函数用于查找包含字串的字段
select insert('我想你',2,1,'喜欢') as '真话';

6)trim(str)实例

-- trim(str)	该函数用于去除字符串两端的空格内容
select trim('       长话短说     ') as '哈哈!';

7)lpad(str,len,填充字符)、rpad(str,len,填充字符),左填充右填充,直到长度达到len

-- lpad(str,len,填充字符)、rpad(str,len,填充字符)	看到pad就联想到padding,顾名思义填充,左填充,右填充
select lpad('12', 4, '0') as '员工编号';

select rpad('12', 4, '0') as '员工编号';

8)replace(str,子串,另一个字符串)实例

-- replace(str,指定替换字串,替换内容)	该函数用于指定去替换字符串内容
select replace('我讨厌你','讨厌','喜欢') as '别憋着';

2、数学函数

函数名称函数的用法
round(x,保留位数)根据我们所取的位数来进行四舍五入保留小数
ceil(x)

在英文中,ceil是天花板的意思,有向上的意思,所以,此函数是向上取整,他返回的是大于或等于函数参数,并且与之最接近的整数。

向上取整的时候,整数,则直接将当前整数加一;负数,则将整数后边的数据抹除;整数,则不变,把它想象成数轴就好。

floor(x)

在英文中,floor是地面,地板的意思,有下面的意思,所以,此函数是向下取整,他返回的是小于或等于函数参数,并且与之最接近的整数。

向下取整的时候,正数,则取其整数部位,抹除小数部位;负数,则取其整数加一;整数,则不变

truncate(x,D)在英文中,译为截断,它的作用是将数据库中的某个字段的字符串截断到指定的长度。他有一些重要的用途,比如解决字段内容过长的问题、提高查询效率以及减少存储空间。
mod(被除数,除数)
求余函数,这个函数得作用是求余,可以使用小数(测试过程中能使用到)
pow(x,D)用于计算指数函数

1)round(x,保留位数)函数

-- 第二部分,数字处理部分
-- round(x,保留位数)
select round(4.567,2) as 'result';
select round(4.56734,2) as 'result';
select round(4.56734,4) as 'result';

2)ceil(x)函数

-- ceil(x) 向上取整,想象成数轴就好
select ceil(4.56) as 'result';
select ceil(4.46) as 'result';
select ceil(4.36) as 'result';
select ceil(3.56) as 'result';
select ceil(-3.56) as 'result';

 

3)floor(x)函数

-- floor(x) 向下取整,也是想象成数轴就好
select floor(4.56) as 'result';
select floor(-4.56) as 'result';

4)truncate(x,D)函数

-- truncate(x,D) 截断函数,根据我们所取得长度来取得我们对应得长度
select truncate(3.45578, 3) as 'result';
select truncate(3.45578, 7) as 'result';

 

5)mod(被除数,除数)函数

-- mod(被除数,除数) 求余函数,提示给出只能给两个整数,但是我在这里可以使用小数,就以实际得操作为主
select mod(10, 3) as 'result';
select mod(113.5, 3) as 'result';
select mod(113.556, 3) as 'result';
select mod(10, 2) as 'result';
select mod(53,4) as 'result';

 离线数仓/实时数仓

6)pow(x,D)函数

-- pow(x,D) 用于计算指数函数
select pow(2,3) as 'result';
select pow(2.2,3) as 'result';
select pow(-2.35,3) as 'result';

 

这里有一个神奇的现象,计算指数函数之后,我们的值结果失真了。我查到资料再回来看看! 

3、日期函数

函数名称函数说明
now()返回当前的日期和时间
curdate()返回当前的日期
curtime()返回当前的时间
weekofyear()根据传入的日期,计算出当前时间在当前所在年份的第几个星期
quarter()函数返回一个指定日期所在季度值,QUARTER(date)参数date是必需的,所以它的返回值介于1~4之间
str_to_date()str_to_date()函数扫描输入字符串以匹配格式字符串。格式字符串可以包含文字字符和以百分比(%)字符开头的格式说明。查看DATE_FORMAT函数以获取格式说明列表。
date_format(date,format)将当前的日期转换成对应的字符串形式
date_add(日期,interval num 时间单位)在输入的日期的基础上,对其进行操作,可以使用表达式interval +/- num 时间单位,可以是分时日月周年
last_day()计算当期日期的当月的最后一天的日期是多少
datediff(edd_date,start_date)计算两个日期之间的天数差,前减后
timetampdiff(unit,start_date,end_date)unit参数是计算的单位,可以是基本的分时日月周,表示为整数,其中start_date,和end_date是DATE或DATETIME的表达式。

1)now()函数

-- now()	返回当前的日期和时间
select now() as 'result';

 

2)curdate()函数

-- curdate()  返回当前的日期,格式为YYYY-MM-DD
select curdate() as 'result';

 

3)curtime()函数

-- curtime()  返回当前的时间
select curtime() as 'result';

 

4)weekofyear()函数

-- weekofyear()  根据传入的日期,计算出当前时间在当前年份所在的第几个星期
select weekofyear('2023-01-07') as 'result';

5)quarter()函数

-- quarter()  函数返回一个指定日期所在季度值,QUARTER(date)参数date是必需的,所以它的返回值介于1~4之间
select quarter('2023-01-07') as 'result';
select quarter('2023-09-02 21:23:19') as 'result';

6)str_to_date()函数

-- str_to_date()  函数返回
select str_to_date('2023,09,02','%Y,%m,%d') as 'result';
select str_to_date('2023-09-02','%Y-%m-%d') as 'result';
select str_to_date('2023,09','%Y,%m,%d') as 'result';
select str_to_date('09','%Y,%m,%d') as 'result';  -- 这里会将第一进行匹配,其他的按照默认值处理

7)date_format()函数

-- date_format(data,format)	 跟str_to_date相反,他是把日期时间转换成其他的字符
select date_format('2023-09-02 21:23:19', '%y-%m-%d') as 'result';
select date_format('2023-09-02 21:23:19', '%y,%m,%d') as 'result';

 

8)date_add(日期,interval num 时间单位——可以是基本的年月日时分)函数

/*
-- date_add(日期,interval num 时间)
select date_add('2023-09-02 21:23:19','4:4:4') as 'result';

1. 将一个日期加上10天:

SELECT date_add('2022-01-01', INTERVAL 10 DAY);

结果:2022-01-11

2. 将一个时间加上2小时:

SELECT date_add('2022-01-01 12:00:00', INTERVAL 2 HOUR);

结果:2022-01-01 14:00:00

3. 将一个日期时间加上1个月:

SELECT date_add('2022-01-01 12:00:00', INTERVAL 1 MONTH);

结果:2022-02-01 12:00:00

 */
-- 将一个日期减去7天:

SELECT date_add(now(), INTERVAL -7 DAY);

9)last_day()函数

-- last_day()   计算当月最后一天是什么时候
select last_day(now()) as 'result';

10)datediff(end_date,start_date)函数

-- datediff(edd_date,start_date)	计算两个日期之间的天数差,前减后
select datediff(now(),date_add(now(),interval -7 day)) as 'result';
select datediff(now(),date_add(now(),interval +7 day)) as 'result';

 

11)timestampdiff(unit,start_date,end_date)函数

-- timestampdiff(unit,start_date,end_date)
select timestampdiff(now(),'2023-9-4') as 'result';

-- 以下示例将以月份值的形式返回2018-01-01和2018-06-01的差值:
SELECT TIMESTAMPDIFF(MONTH, '2018-01-01', '2018-06-01') result;

 

4、流程控制函数

我的其他博客有专门讲到,借一步说话!

1)if(expr,v1,v2)函数

2)ifnull()函数

3)case…when函数的三种用法

5、系统信息函数

系统信息函数函数说明
version()查看MySQL的版本函数
connection_id()该函数用于返回MySQL中当前连接的连接ID。用于建立与数据库的连接的连接ID对于所连接的客户端之间的每个连接 都是唯一的。且该函数不需要任何的参数。
schema()/database()显示当前所使用到的数据库
user()/current_user()/system_user()显示当前使用用户

1)version()函数

2)connection_id()函数

3)schema()/database()函数

5)user(),current_user(),system_user()函数

select user();
select current_user();
select system_user();

6、聚合函数

1)功能与分类

2)聚合函数的传入参数,数据类型

7、其他函数

函数名称函数描述
format(N,D,[locate])

该函数用于帮助格式化给定的数字格式,例如“#,###,###.#”,将他们四舍五入到特定的小数点,然后以字符串的形式返回结果

N:要格式化的数字

D:四舍五入到的小数位数

locate:这是一个可选参数,他决定的是一千个分隔符以及分隔符之间的分组。默认情况下,MySQL中存在en_US语言环境。

INET_ATON(IP)将IP地址转换为数字
INET_NTOA(NUM)将数字转换为IP
password(str)该函数是一个加密函数,用于将字符串加密为一个40个字符的字符串,是单向加密函数
md5(str)md5是一种加密方法,可以将数据进行加密
encode(str,pswd_str)/decode(加密的字符串,pswd_str)该函数是用来对字符串来进行编码和解码的操作

1)FORMAT(x,y)函数

/*
FORMAT(X,D [locale])函数
1. X: 需要格式化的数字或日期类型的数据。注意,该参数必须是表达式,并返回任何数字或日期值。可以是常量、变量或其他函数的结果。如果值为零,则无需指定正负号。
2. D: 小数点后面的位数。最大允许精度为30位,小于1位的值将被视为0。
3. locale:  可选参数。语言/本地环境,使用一种特定的国家/地区设置格式数字值。可以使用' en_US '表示美国典型的货币和数字格式。默认情况下,根据系统语言环境来确定。
 */
-- 1. 格式化数值类型的数据
-- 我们先来看一个简单的例子,将一个数字格式化成小数点后保留两位,例如格式化前的数字为:12345.6789,我们要将其格式化为:12,345.68,代码如下:
SELECT FORMAT(12345.6789, 2);

-- 2. 在这个例子中,我们使用了NOW()函数来获取当前日期和时间,然后将其格式化为所需的字符串格式。
SELECT FORMAT(NOW(), 'YYYY-DD-MM HH:MM:SS');

-- 3. 格式化货币类型的数据除了数字和日期类型,我们还可以使用format函数格式化货币类型的数据。例如,将一个数字格式化为货币格式,小数点后保留2位,带有货币符号“$”,我们可以使用如下代码:

SELECT FORMAT(12345.6789, 2, 'en_US');

2)INET_ATON(ip)函数

 例如:

 IP地址:66.102.7.147
 计算公式: 66*256^3+102*256^2+7*256+147=1113982867
 cmd命令行中输入:" ping 111392867"能PIN通(前提:IP地址是真实的)

/*
INET_ATON函数是MySQL中的网络工具函数之一,用于将IP地址转换为整数表示。

例如:INET_ATON('192.168.0.1'),运行结果将返回整数值3232235521。
INET_ATON函数接收一个字符串类型的参数,该参数必须是一个合法的IPv4地址。

例如:INET_ATON('192.168.0.1')和INET_ATON('255.255.255.255')是合法的参数,而INET_ATON('')和INET_ATON('192.168.0.256')是不合法的参数。
INET_ATON函数的作用不仅仅局限于将IPv4地址转换为整数值,还可以在MySQL中进行IP地址的范围查询。

例如:SELECT * FROM users WHERE INET_ATON('192.168.0.1') BETWEEN INET_ATON(start_ip) AND INET_ATON(end_ip)。
上面的SQL语句将返回所有start_ip和end_ip范围内包含IPv4地址192.168.0.1的用户。

需要注意的是,INET_ATON函数只能将IPv4地址转换为整数表示,如果需要将整数表示的IP地址转换为字符串形式,则需要使用INET_NTOA函数。

例如:INET_NTOA(3232235521),将返回字符串'192.168.0.1'。
通过使用INET_ATON和INET_NTOA函数,可以在MySQL中轻松地实现IPv4地址的转换和查询。
 */
SELECT inet_aton('192.168.75.188') as 'result';

 

3)INET_NTOA(NUM)函数

-- INET_NTOA(NUM)函数
select inet_ntoa(3232254908) as 'result';

 

4)password(str)函数

5)md5(str)函数

-- md5(str)函数
select md5('i love you') as 'result';

 

6)encode(str,pswd_str)、decode(加密的字符串,pswd_str)函数

MySQL8版本这两个方法应该弃用了,可能老版本有!
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值