Mysql常用函数总结
2022/3/21 19:29:45
本文主要是介绍Mysql常用函数总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
为了简化操作,mysql提供了大量的函数给程序员使用(例如:你想输入当前时间,可以调用now()函数);函数可以出现的位置:
插入语句的values()中,更新语句中,删除语句中,查询语句及其子句中。
原文链接:https://www.cnblogs.com/progor/p/8832663.html
1.聚集函数
- 聚集函数用于汇集记录(比如不想知道每条学生记录的确切信息,只想知道学生记录数量,可以使用count())。
- 聚集函数就是用来处理“汇集数据”的,不要求了解详细的记录信息。
- 聚集函数(aggregate function) 运行在行组上,计算和返回单个值的函数。
- 实验表数据(下面的运行数据基于这个表):
create table student( name varchar(15), gender varchar(15), age int ); insert into student values("lilei","male",18); insert into student values("alex","male",17); insert into student values("jack","male",20); insert into student values("john","male",19); insert into student values("nullpeople","male",null);
(1) avg(字段)函数
返回指定字段的数据的平均值
- avg() 通过对表中行数计数并计算指定字段的数据总和,求得该字段的平均值。
select avg(age) as "年龄平均值" from student where gender = 'male';
- avg() 函数忽略列值为 NULL 的行,如果某行指定字段为null,那么不算这一行。
(2) count(字段)函数
- 返回指定字段的数据的行数(记录的数量)
- 字段可以为"",为时代表所有记录数,与字段数不同的时,记录数包括某些字段为null的记录,而字段数不包括为null的记录
select count(age) as "男生填了年龄的数量" from student where gender = 'male';
select count(*) as "男生的数量" from student where gender = 'male';
(3) max(字段)函数
- 返回指定字段的数据的最大值
select max(age) as "年龄最大值" from student where gender = 'male';
- 如果指定字段的数据类型为字符串类型,先按字符串比较,然后返回最大值。
- max() 函数忽略列值为 null的行
(4) min(字段)函数
- 返回指定字段的数据的最小值
select min(age) as "年龄最小值" from student where gender = 'male';
- 如果指定字段的数据类型为字符串类型,先按字符串比较,然后返回最小值。
- min()函数忽略列值为 null的行
(5) sum(字段)函数
- 返回指定字段的数据之和
select sum(age) as "年龄总和值" from student where gender = 'male';
- sum()函数忽略列值为 null的行
(6) 补充
- 聚集函数的字段如果的数据为null,则忽略值为null的记录。
- 例如:avg有5行,但是只有四行的年龄数据,计算结果只算四行的,
- 但是如果不针对字段,那么会计算,比如count(x)是计算记录数的,null值不影响结果。
- 还有一些标准偏差聚集函数,这里不讲述,想了解更多的可以百度。
- 聚集函数在5.0+版本上还有一个选项DISTINCT,与select中类似,就是忽视同样的字段。【不可用于count(x)】
select avg(distinct age) as "年龄平均值" from student where gender = 'male';
2.用于处理字符串的函数
(1) 合并字符串函数 concat(str1,str2,str3…)
- 用于将多个字符串合并成一个字符串,如果传入的值中有null,那么最终结果是null
- 如果想要在多个字符串合并结果中将每个字符串都分隔一下,可以使用concat_ws(分隔符,str1,str2,str3…),如果传入的分隔符为null,那么最终结果是null(不过这时候如果str有为null不影响结
果)
select concat("i","am","superman");
select concat_ws(" ","i","am","superman");
(2) 比较字符串大小函数:strcmp(str1,str2)
- 用于比较两个字符串的大小。左大于右时返回1,左等于右时返回0,,左小于于右时返回-1,
- strcmp类似编程语言中的比较字符串函数(依据ascll码?),会从左到右逐个比较,直到有一个不等就返回结果,否则比较到结尾。
select strcmp ("a","b");
select strcmp ("ab","ac");
select strcmp ("d","a");
select strcmp ("a","a");
(3) 获取字符串字节数函数 length(str)
- 用于获取字符串字节长度(返回字节数,因此要注意字符集)
select length("abcd");
(4) 获取字符串字符数函数:char_length(str)
- 用于获取字符串长度
select char_length("abcd");
(5) 字母大小写转换函数:大写:upper(x),ucase(x);小写lower(x),lcase(x)
- upper(x),ucase(x)用于将字母转成大写,x可以是单个字母也可以是字符串
select upper("a");
- lower(x),lcase(x)用于将字母转成小写,x可以是单个字母也可以是字符串
- 对于已经是了的,不会进行大小写转换
(6) 字符串查找函数
find_in_set(str1,str2)
* 返回字符串str1在str2中的位置,str2包含若干个以逗号分隔的字符串(可以把str2看出一个列表,元素是多个字符串,查找结果是str1在str2这个列表中的索引位置,从1开始)
> select find_in_set("abc","123,456,abc");
field(str,str1,str2,str3…)
* 与find_in_set类似,但str2由一个类似列表的字符串变成了多个字符串,返回str在str1,str2,str3…中的位置。
> select field("abc","123","456","abc");
locate(str1,str2):
* 返回子串str1在字符串str2中的位置
> select locate("a","123a123");
position(str1 IN str2)
* 返回子串str1在字符串str2中的位置
> select position("a" IN "123a123");
instr(str1,str2)
* 返回子串str2在字符串str1中的位置【注意这里调转了】
> select instr("123a123","a");
(7) 获取指定位置的子串
elt(index,str1,str2,str3…) 返回指定index位置的字符串 select elt(1,"a","b","c"); left(str,n) 截取str左边n个字符 select left("superman",5); right(str,n) 截取str右边n个字符 select right("superman",3); substring(str,index,len) 从str的index位置截取len个字符 select substring("iamsuperman",4,5);
(8) 字符串去空函数
ltrim(str):
去除字符串str左边的空格
select ltrim(" hello world");
rtrim(str)
* 去除字符串str右边的空格
select rtrim("hello world ");
trim()
去除字符串str两边的空格
select rtrim(" hello world ");
(9) 字符串替换函数
insert(str1,index,len,str2) 使用str2从str1的index位置替换str1的len个元素 select insert("hello world",7,5,"amy"); replace(str,str1,str2) 将str中的子串str1全部替换成str2 select replace("hello admin","admin","amy");
(10) 用于处理数值的函数
绝对值函数:abs(x) 返回x的绝对值 向上取整函数:ceil(x) 返回x的向上取整的整数 向下取整函数:floor(x) 向下取整函数:floor(x) 取模函数:mod(x,y) 返回x mod y的结果 随机数函数:rand() 返回0-1内的随机数 如果想对某种情况都使用同一随机值,可以使用rand(x),x相同时返回同样的随机结果 四舍五入函数:round(x,y) 四舍五入函数:round(x,y) select round("3.1415926",3); 数值截取函数:truncate(x,y) 返回数值x截取y位小数的结果(不四舍五入) select truncate("3.1415926",3);
(11) 用于处理时间日期的函数
获取当前日期:curdate(),current_date() select curdate(); 获取当前时间:curtime(),current_time() select curtime(); 获取当前日期时间:now() select now(); 从日期中选择出月份数:month(date),monthname(date) select month(curdate()),monthname(curdate()); 从日期中选择出周数:week(date) select week(curdate()); 从日期中选择出年份:year(date) select year(curdate()); 从时间中选择出小时数:hour(time) select hour(curtime()); 从时间中选择出分钟数:minute(time) select minute(curtime()); 从时间中选择出今天是周几:weekday(date),dayname(date) select weekday(curdate()),dayname(curdate());
(12) DATEDIFF() 函数
DATEDIFF() 函数返回两个日期之间的天数 SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate
(13) DATE_FORMAT() 函数
DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。 date 参数是合法的日期。format 规定日期/时间的输出格式 DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p') DATE_FORMAT(NOW(),'%m-%d-%Y') DATE_FORMAT(NOW(),'%d %b %y') DATE_FORMAT(NOW(),'%d %b %Y %T:%f') DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%S')
友情提示:借鉴大佬的博客学习一波并进行其他函数进行补充!有不到之处敬请批评指正!
如需更详细的美容敬请查阅以下地址:https://www.cnblogs.com/progor/p/8832663.html
这篇关于Mysql常用函数总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南