MySQL常见函数

tech2022-07-30  159

常见函数

将一组逻辑语句封装在方法体中,对外暴露方法名:

好处:1.隐藏了实现细节   2. 提高代码的重用性

调用:select 函数名(实参列表) 【from表】

特点:1. 该方法函数名  2. 函数的功能

分类:单行函数:如concat , length 、ifnull‘等

          分组函数:做统计使用,又称为统计函数,聚合函数,组函数

字符函数

1. length 获取参数值的字节个数

Select length(’张三丰hahaha’); --15

2. concat 拼接字符串

Select concat(str1,str2,。。。) as 名 from 表

3. upper、lower:大写,小写转换

Select upper(‘jo’);

Select lower(’JO’);

#示例:将姓变大写,名变小写,然后拼接

Select concat(upper(last_name),lower(first_name))as 姓名 from 表;4.

4. Substr / substring 截取字符串

Select substr(‘截取字符串示例’,6);--sql语句默认从1开始,“示例“,截取索引位置到之后所有内容

Select substr(‘截取字符串示例’,1,2);--截取从指定索引处开始到指定个数;

 #案例:姓名中首字符大写,其他字符小写然后用_拼接,显示出来

Select concat (upper(substr(last_name,1,1)),’_’

Instr 返回字串第一次出现的索引,找不到返回0;

Select instr(‘str1’,’st’);--1

Trim 去除字符串前后空格,可指定去除

Select length(trim(‘   str1    ’));--3

Select trim(‘a’ from ’aaaaaaastraaa1aaaa‘));--straaa1 # 去除字符串前后指定的字符

Lpad :用于指定的字符实现左填充指定长度

Select lpad(‘str1’,‘5’,‘*’)#*str1

Select lpad(‘str1’,‘2’,‘*’)#st

rpad :用于指定的字符实现右填充指定长度

Select lpad(‘str1’,‘5’,‘*’)#str1*

replace 替换

select replace(‘str1‘,’st‘,’2‘);

数学函数

round 四舍五入

select round(-1.55); # -2

select round(1.567,2)#1.57

ceil 向上取整,返回大于等于该参数的最小整数

select ceil(1.002);#2

select ceil(-1.002);#-1

floor 向下取整,返回小于等于该参数的最大值

select floor(-9.99); #-10

truncate 截断

select truncate(1.65,1);#1.6

mod 取余

select mod(-10,-3);#-1

select mod(10,-3);#1

日期函数

now 返回当前系统日期+时间

select now();

curdate 返回当前系统日期,不包含时间

select curdata();

curtime 返回当前系统日期,不包含日期

select curtime();

YEAR(),MONTH(),DAY(),可以获取指定的部分,年月日时分秒

Select year(now())as 年;

Select year(’1998-1-1’)AS 年; #1998

Select year(字段名)AS 年 from 表名;

STR_TO_DATA:将日期格式的字符转换成指定的日期

STR_TO_DATA(‘9-13-1999‘,’%m-%d-%Y‘)  # 1999-09-13

Data_format:将日期转换成字符

Data_format(‘2018/6/6‘,’%Y年%m月%d日’)  #2018年06月06日

其他函数:

Select varsion();#查看版本 select database();查看当前数据库 select user();当前用户。

流程控制函数

If函数 :if else的效果

If(10<5,’大’,’小’) #小

Case函数的使用一:swatch case的效果

语法:case 判断语句 end #case where 条件1 then 结果1 .。。。else 结果 end as 字段名 from 表名;

Eg:select 字段名,

Case 要判断的表达式或字段

       When 条件1 then 结果1

       When 条件2 then 结果2

When 条件3 then 结果3

Else 结果

       End as 字段别名

From 表名;

 

Case函数的使用二:多重else if

Case

When 条件1 then 结果1

       When 条件2 then 结果2

When 条件3 then 结果3

Else 结果

       End as 字段别名

From 表名;

 

 

常见函数:

字符函数:length ; concat ; substr ; instr ; trim ; upper ; lower ; lpad ; rpad ; replace ;

数学函数:round ; ceil ; floor ; truncate ; mod ;

日期函数:now ; curdata ; curtime ; year ; month ; monthname ; day ; hour ; minute ; second ; str_to_data ; data_format ;

其他函数 ; version ; database ; user ;

控制函数:if ; case

 

 

聚合查询

max;select max(字段名) from 表名;

select 表名.* from 表名 where 字段名=(select max(字段值)from字段名);

聚合函数

说明

SUM()

求所有行中单列结果的总和

AVG()

平均值

MAX()

最大值

MIN()

最小值

COUNT()

求总行数

 

特点:1.sum、avg一般用于处理数值型,max,min,count可以处理任何类型

2.以上分组函数都忽略null值

3.可以搭配distinct搭配

4.count(*)统计行数,count(1)统计1的个数,效率:myisam存储引擎下,count(*)的效率最高,innodb存储引擎下,count(*)和count(1)的效率差不多

5.

 

分组查询

语法:SELECT 列名 FROM 表名 WHERE 条件  [GROUP BY 分组依据(列);]()

关键字:GROUP BY,必须在where之后生效,与聚合连用

 

最新回复(0)