MySQL函数讲解(字符串函数、转化函数、流程函数、比较谓词等)

本文介绍了MySQL中的常见函数,包括字符串函数如CONCAT,LENGTH等,算术函数如加减乘除,日期函数如CURDATE,NOW等,转换函数如CAST,COALESCE,流程函数如IF,CASE,以及聚合函数如COUNT,AVG,并讲解了谓词在条件判断中的应用。
摘要由CSDN通过智能技术生成

目录

MySQL常见函数

字符串函数 进行字符串操作的函数

算术函数 进行数值计算的函数

日期函数 进行日期操作的函数

转换函数 进行数据类型和值转换的函数

流程函数  进行条件删选

聚合函数 进行数据聚合的函数

谓词 一般用于条件判断


什么是函数

函数指一段可以直接被另一段程序调用的程序或代码

MySQL常见函数

字符串函数 进行字符串操作的函数

MySQL常用的内置 字符串函数如下

CONCAT(S1,S2……Sn)          字符串拼接函数,将S1,S2……Sn拼接为一个字符串

LENGTH(str)                        字符串长度,显示出字符串中包含多少个字符

LOWER(str)                         将字符串str全部转为小写

UPPER(str)                          将字符串str全部转为大写

REPLACE(str1,str2,str3)        字符串替换,将str1中的str2部分替换为str3

LPAD(str,n,pad)                   左填充,用字符串pad对str的左边进行填充,使得str达到n个字符串长度

RPAD(str,n,pad)                  右填充,用字符串pad对str的右边进行填充,使得str达到n个字符串长度

TRIM(str)                             去掉字符串的头部和尾部的空格

SUBSTRING(str,start,len)      返回字符串str从start位置起的len个长度的字符串(字符串的索引是从1开始的,而不是0)

update staff1 set number lpad(number,8,'0'); #修改number字段值,使用字符串”0”对其左填充,使得number达到8个字符串长度(注意:number的数据类型为varchar)

算术函数 进行数值计算的函数

MySQL常用的内置 算术函数如下

+(加法)、-(减法)、*(乘法)、/(除法)

ABS(x)                   对x取绝对值

MOD(x,y)              返回x/y的模(余数)

RAND()                 返回0~1内的随机数

ROUND(x,y)          求参数x的四舍五入的值,保留y位小数

CEIL(x)                  对x向上取整

FLOOR(x)              对x向下取整

select round(rand()*100000,0);   #随机生成5位数的验证码     如果产生的小数0.012345,生成的验证码就只有4位数1234,因此需要补0
select lpad(round(rand()*100000,0),5,'0')#补0

日期函数 进行日期操作的函数

MySQL常用的内置 日期函数如下

CURDATE()           返回当前日期(年月日)

CURTIME()            返回当前时间

NOW()                  返回当前日期和时间

YEAR(date)           获取指定date(年月日)的年份

MONTH(date)       获取指定date(年月日)的月份

DAY(date)             获取指定date(年月日)的天数

DATE_ADD(date , INTERVAL expr type)     在指定date(年月日)上增加expr(expr可以是年/月/日,具体是什么类型由type决定)

DATEDIFF(date1 , date2)     返回起始时间date1和结束时间date2之间的天数(date1-date2)

select date_add(now(),interval 20 day );    #当前日期的20天之后的日期(month为月,year为年)
select name,datediff(curdate(),entrydate) as 'date' from staff1 order by date desc;    #根据入职时间(entrydate)推算出入职天数,并按照倒序排序

转换函数 进行数据类型和值转换的函数

CAST(数据1 AS 数据类型1)      将数据1转为数据类型1

COALESCE(数据1 , 数据2 ,…… )

主要由两个用途:1、将NULL替换为其他的值

2、返回此数据列表中第一个非null表达式的值

select cast('001' as signed integer); #将字符串“001”转换为有符号的整数,显示结果为1
select coalesce(number,0) from staff1;   #查询staff1表的number字段,并将此字段的NULL值替换为0
select coalesce(number,age,0) from staff1; #查询staff1表的number字段;当numbernullage不为null时,number返回age的值;当numberage都为null时,返回0;当number为非null时,返回真实值

流程函数  进行条件删选

流程函数一般在SQL语句中实现条件筛选,从而提高语句的效率

MySQL常用的内置 流程函数如下

如果value(条件表达式)为true,则返回t,否则返回f

IF(vaule , t , f);                     

如果value1(可以是某个记录)不为空,则返回value1,负责返回value2

IFNULL(value1 , value2);      

如果val1为true,则返回res1;val2为true,返回res2;否则返回default

CASE

  WHEN [val1 ] THEN [res1]

  WHEN [val2] THEN [res2]

   ……

   ELSE [default] 

END;

如果espr的值等于val1,返回res1;espr的值等于val2,返回res2;否则返回default

CASE [expr]

  WHEN [val1] THEN [res1]  

  WHEN [val2] THEN[res2]

  ……

  ELSE [default]

END;

select name,(case origo when '重庆' then '新一线城市' else '非一线城市' end) from staff1; #查询staff1表的name和工作城市字段,如果工作城市为重庆,则显示为新一线城市,其余为非一线城市

聚合函数 进行数据聚合的函数

聚合函数的使用在DQL的分组查询有介绍

将一列数据作为一个整体,进行纵向计算(所有NULL值不参与计算)

count     统计数量(一列有多少个值)

max        最大值(一列的最大值)

min        最小值(一列的最小值)

avg         平均值(一列的平均值)

sum        求和(一列的所有数值求和)

聚合函数使用格式

SELECT 聚合函数 (字段列表) AS [别名] FROM 表名 [WHERE条件列表];

select COUNT(*) from emp;   #统计这个表有多少行(由于Null不参与统计,可能每个列的统计数值不一致,其中会取最大值作为结果返回)
select max(age) from emp;   #统计age的最大值
select avg(age) from emp;   #统计age的平均值

谓词 一般用于条件判断

谓词的使用在DQL的条件查询有介绍

谓词,全名为比较谓词;是一种需要满足返回值为真值True的函数

BETWEEN … AND …     在某个范围之内(左闭右闭)

IN(…)                           …为多个信息,in(…)表示只要满足…中的某个信息就算匹配,为真值

NOT IN(…)                   …为多个信息,只要不满足…的所有信息就算匹配,为真值

LIKE 占位符               模糊匹配(_表示匹配单个字符、%表示匹配任意字符)(OR的简便用法)

IS NULL                       表示NULL值

IS NOT NULL               表示非NULL值

select * from staff1 where gender is null ;     #查询gendernull,并将其对应的所有字段的值都显示出来
select * from staff1 where gender is not null ; #查询gender为非null,并将其对应的所有字段的值都显示出来
select * from staff1 where gender in ('','') ;  #查询性别为男、或者性别为女的信息,并将其对应的所有字段的值都显示出来
select * from staff1 where name like '__'  ;      #查询名称为2个字符信息,并将其对应的所有字段的值都显示出来
select * from staff1 where number between 20000100 and 20000102 #查询number2000010020000102之间对应的信息,并将其对应的所有字段的值都显示出来

注意事项

对于IN来说,如果此运算符的两侧有一个为NULL,则返回结果只能是NULL或1;如果找不到匹配项则返回NULL;如果找到匹配项,则返回1;

对于NOT IN来说,如果此运算符的两侧有一个为NULL,则返回结果只能是NULL或0;如果找不到匹配项则返回NULL;如果找到匹配项,则返回0;

select null in (1,3) , null in (1,3,null); #结果为null  null
select 10 in (1,null), 10 in (null,10); #结果为null  1
select 10 in (1,20), 10 in (1,10);      #结果为0  1

select null not in (1,3) , null not in (1,3,null); #结果为null  null
select 10 not in (1,null), 10 not in (null,10); #结果为null  0
select 10 not in (1,20), 10 not in (1,10);      #结果为1 和 0

MySQL基础语法(DDL、DQL、DML、DCL)_静下心来敲木鱼的博客-CSDN博客https://blog.csdn.net/m0_49864110/article/details/131913031?spm=1001.2014.3001.5502

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静下心来敲木鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值