mysql系列——常用的几十个函数详解(七)

文章目录

  • 一、Mysql数值型函数
  • 二、Mysql字符串函数
  • 三、Mysql日期和时间函数
  • 四、Mysql聚合函数
  • 五、Mysql流程控制函数
  • 六、其他函数

本篇主要介绍一下Mysql中常用的一些函数,篇幅较长,请读者耐心阅读和实操,这样收获多多哦!!

一、Mysql数值型函数

函数名称作用
abc 求绝对值
sqrt 求二次方根
mod 求余数
ceil 和 ceiling 功能一样,都是返回不小于参数的最小整数,即向上取整
floor 向下取整,返回值转化为一个bigint
rand 生成一个0~1之间的随机数,传入整数参数是用来重复序列
round 对所参数进行四舍五入
sign 返回参数的符号
pow 和 power 功能一样,都是输出所传参数的次方的结果值
sin 求正弦值
asin 求反正弦值,与函数sin互为反函数
cos 求余弦值
acos 求反余弦值,与函数cos互为反函数
tan 求正切值
atan 求反正切值,与函数tan互为反函数
cot 求余切值

1、abs():求绝对值

函数abs(x)返回x的绝对值。正数的绝对值是其本身,负数的绝对值为其相反数,0的绝对值是0本身。
在这里插入图片描述
2、sqrt():求二次方根(开平方)

函数sqrt(x)返回非负数x的二次方根。负数没有平方根,返回结果为null。
在这里插入图片描述
3、mod:求余数

函数mode(x,y)返回x被y除后的余数,mod()对带有小数部分的数组也起作用,它返回除法运算后的余数。
在这里插入图片描述
4、ceil和ceiling:向上取整

函数ceil(x)和ceiling(x)的意义相同,返回不下于x的最小整数值,返回值转化为一个bigint。
在这里插入图片描述
5、floor:向下取整

floor(x)函数返回小于x的最大整数值。
在这里插入图片描述
6、rand:随机生成一个0~1的随机数

生成一个0~1的随机数,传入整数参数是用来产生重复序列。
在这里插入图片描述
7、round:四舍五入函数

返回最接近于参数X的整数;round(x,y)函数对参数进行四舍五入的操作,返回值保留小数点后面指定的y位。
在这里插入图片描述
8、sign:返回参数的符号

函数sign(x)返回参数的符号,X的值为负、零和正时,返回结果依次为:-1、0和1。
在这里插入图片描述
9、pow 和 power:次方函数

pow(x,y)函数和power(x,y)函数用于计算x的y次方。
在这里插入图片描述
10、sin:正弦函数

sin(x)返回x的正弦值,其中X为弧度值。
在这里插入图片描述

注:pi()函数返回圆周率(3.141593)

其他几个三角函数在此就不一一举例说明,,有兴趣的读者可自己练习一下。

二、Mysql字符串函数

函数名称作用
length 计算字符串长度函数,返回字符串的字节长度
concat 合并字符串函数,返回结果为连接参数产生的字符串,参数可以是一个或多个
insert 替换字符串函数
lower 将字符串中的字母转换为小写
upper 将字符串中的字母转换为大写
left 从左侧截取字符串,返回字符串左边的若干字符
right 从右侧截取字符串,返回字符串右边的若干字符
trim 删除字符串左右两侧的空格
replace 字符串替换函数,返回替换后的新字符串
substr 和substring 截取字符串,返回从指定位置开始的指定长度的字符串
reverse 字符串反转(逆序)函数,返回与原始字符串顺序相反的字符串

1、length:返回字符串字节长度

返回值为字符串的字节长度,使用utf8(unicode的一种变长字符编码,称万国码)编码字符集时,一个汉字是3个字节,一个数字或字母是一个字节。
在这里插入图片描述
2、concat:合并字符串

函数concat(s1,s2,…)返回结果为连接参数产生的字符串,可有一个或多个连接参数。

  • 若有任何一个连接参数为null,则返回值为null;
  • 若所有参数均为非二进制字符串,则结果为非二进制字符串;
  • 若自变量中含有任一二进制字符串,则结果为一个二进制字符串。

在这里插入图片描述
3、insert:替换字符串函数

函数insert(s1,x,len,s2)返回字符串s1,s1子字符串起始于x位置,并且len个字符的子字符串被代替s2。x的值从1开始,第一个字符的x=1。

  • 若x超过字符串长度,则返回值为原始字符串s1;
  • 若len的长度大于s2字符串长度,则s1字符串从位置x开始被s2替换;
  • 若任何一个参数为null,则返回值为null

在这里插入图片描述
4、lower:将字母转换成小写

lower(str)函数可以将字符串str中的字母字符全部转换成小写。
在这里插入图片描述
5、upper:将字母转换成大写

upper(str)函数可以将字符串str中的字母字符全部转换成大写。
在这里插入图片描述
6、left:从左侧截取字符串

left(str,n)函数返回字符串str最左边的n个字符,str=1表示1个字符。
在这里插入图片描述
7、right:从右侧截取字符串

right(str,n)函数返回字符串str最右边的n个字符。
在这里插入图片描述
8、tirm:删除字符串两侧空格

tiem(str)函数删除字符串str两侧的空格。
在这里插入图片描述
9、replace:字符串替换

函数replace(s,s1,s2)使用字符串s2替换字符串s中所有的字符串s1。
在这里插入图片描述
10、substr 和 substring:截取字符串

  • substr(str,pos)
  • substr(str from pos)
  • substr(str,pos,len)
  • substr(str from pos for len)

substr是和substring()的同义词。

  • 没有len参数的形式是字符串str从pos位置开始返回一个子字符串;
  • 带有len参数的形式是字符串str从pos位置开始返回长度为len的子字符串;
  • 使用from的形式是标准的SQL语法;
  • 也可以对pos使用负值,在这种情况下,子字符串的开头是字符串末尾的pos字符,而不是开头。
  • 在这个函数的任何形式中pos可以使用负值;
  • 对于所有形式的substring(),从中提取子串的字符串中第一个字符的位置被认为是1。
/** 第三个字符之后的子字符串:inese **/
SELECT substring('chinese', 3);

/** 倒数第三个字符之后的子字符串:ese **/
SELECT substring('chinese', -3);

/** 第三个字符之后的两个字符:in **/
SELECT substring('chinese', 3, 2);

/** 倒数第三个字符之后的两个字符:es **/
SELECT substring('chinese', -3, 2);

/** 第三个字符之后的子字符串:inese **/
SELECT substring('chinese' FROM 3);

/** 倒数第三个字符之后的子字符串:ese **/
SELECT substring('chinese' FROM -3);

/** 第三个字符之后的两个字符:in **/
SELECT substring('chinese' FROM 3 FOR 2);

/** 倒数第三个字符之后的两个字符:es **/
SELECT substring('chinese' FROM -3 FOR 2);

11、reverse:字符串反转函数

reverse(s)可以将字符串s反转,返回的字符串顺序与s字符串顺序相反。
在这里插入图片描述

三、Mysql日期和时间函数

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

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

curdate()和current_date()函数的作用相同,将当前日期按照“YYYY-MM-DD”或“YYYYMMDD”格式的值返回,具体格式根据函数用在字符串或数字语境中而定,返回的 date 类型。
在这里插入图片描述
2、curtime 和 current_time:返回当前系统的时间值

curtime()和current_time()函数的作用相同,将当前日期按照“HH-MM-SS”或“HHMMSS”格式的值返回,具体格式根据函数用在字符串或数字语境中而定,返回的 time 类型。
在这里插入图片描述
3、now 和 sysdate:获取当前系统时间日期

now()和sysdate()函数作用相同,都是返回当前日期和时间值,格式为“YYYY-MM-DD HH:MM:SS”或“YYMMDDHHMMSS”,具体格式根据函数用在字符串或数字语境中而定,返回的 datetime 类型。
在这里插入图片描述
4、unix_timestamp:获取UNIX时间戳

unix_timestamp(date)若无参数调用,返回一个无符号整数类型的unix时间戳('1970-01-01 00:00:00’GMT之后的秒数)。
在这里插入图片描述
5、from_unixtime:时间戳转日期

from_unixtime(unix_timestamp[,format])函数把unix时间戳转换为普通格式的日期时间值,与unix_timestamp()函数互为反函数。
有两个参数:

  • unix_timestamp:时间戳(秒)
  • format:要转换的格式。比如“%Y-%m-%d”,这样的格式化之后就是 xxxx-xx-xx的模样。

可以有的形式:

格式说明
%M 月名字(January ~ December)
%W 星期名字(Sunday ~ Saturday)
%w 一个星期中的天数(0=Sunday ~ 6=Saturday)
%D 有英语前缀的月份的日期(1st,2nd,3rd,等等)
%Y 年,数字,4位
%y 年,数字,2位
%a 缩写的星期名字(Sun ~ sat
%d 月份中的天数(00 ~ 31)
%e 月份中的天数(0 ~ 32)
%m 月,数字(01 ~ 12)
%c 月,数字(1 ~ 12)
%b 缩写的月份名字(Jan ~ Dec)
%j 一年中的天数(001 ~ 366)
%H 小时(00 ~ 23)
%k 小时(0 ~ 23)
%h 小时(01 ~ 12)
%I(i的大写) 小时(01 ~ 12)
%l(L的小写) 小时(1 ~ 12)
%i 分钟,数字(00 ~ 59)
%r 时间,12小时(hh:mm:ss[AP]M)
%T 时间,24小时(hh:mm:ss)
%S 秒(00 ~ 59)
%s 秒(00 ~ 59)
%p AM或PM
%U 星期(0 ~ 52),这里星期天是星期的第一天
%u 星期(0 ~ 52),这里星期天是星期的第一天
%% 输出%

在这里插入图片描述
6、month:获取指定日期的月份

month(date)函数返回指定date对应的月份。范围为1 ~ 12。
在这里插入图片描述
7、monthname:获取指定日期的月份的英文名称

monthname(date)函数返回指定date对应的月份的英文全名。
在这里插入图片描述
8、dayname:获取指定日期的星期英文名称

dayname(date)函数返回指定date对应的工作日的英文全名。
在这里插入图片描述
9、dayofweek:获取日期对应的周索引

dayofweek(date)函数返回date对应的一周的索引(位置)。1表示周日,…,7表示周六。这些索引值对应ODBC标准。
在这里插入图片描述
10、week:获取指定日期是一年中的第几周

week(date[,mode])函数计算日期date是一年中的第几周。week(date,mode)函数允许指定星期是否起始于周日或周一,以及返回值的返回是否为 0 ~ 52 或 1 ~ 53。
week函数接受两个参数:

  • date 是要获取周数的日期;
  • mode 是一个可选参数,用于确定周数计算的逻辑。它允许你指定本周是从星期一还是星期日开始,返回的周数应在0 ~ 52 或 1 ~ 53。

如果忽略mode参数,默认情况下week函数将使用default_week_format系统变量的值。要获取default_week_format变量的当前值,请使用 show variables 语句。如下:
在这里插入图片描述
在我们的Mysql服务器中,default_week_format的默认值为0,下表格说明了mode参数如何影响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

上表中“今年有4天以上”表示:

  • 如果星期包含了1月1日,并且在新的一年中有4天或更多天,那么这周是第1周;
  • 否则,这一周的数字是前一年的最后一周,下周是第一周。

在这里插入图片描述
11、dayofyear:获取指定日期在一年中的位置

dayofyear(date)函数返回date是一年中的第几天,范围1 ~ 366。
在这里插入图片描述
12、dayofmonth:获取指定日期在一月中的位置

dayofmonth(date)函数返回date是一月中的第几天,范围1 ~ 31。
在这里插入图片描述
13、year:获取年份

year()函数可以从指定日期值中来获取年份值。
在这里插入图片描述
14、time_to_sec:将时间转换为秒值

time_to_sec(time)函数返回将参数time转换为秒数的时间值,转换公式为“ 小时 * 3600 + 分钟 * 60 + 秒 ”。

在这里插入图片描述
15、sec_to_time:将秒值转换为时间

sec_to_time(seconds)函数返回将参数seconds转换为小时、分钟和秒数的时间值。
在这里插入图片描述
16、date_add 和 adddate:向日期添加指定时间间隔

date_add(date,INTERVAL expr type)

  • date:参数是合法的日期表达式;
  • expr:参数是你希望添加的时间间隔;
  • type:参数可以是下列值:
  • 对应复合型的type,需要使用引号对两个参数进行引用起来,中间用任何非数字字符作为间隔即可,并且不能使用负数
Type值含义
MICROSECOND 间隔单位:毫秒
SECOND 间隔单位:秒
MINUTE 间隔单位:分钟
HOUR 间隔单位:小时
DAY 间隔单位:天
WEEK 间隔单位:星期
MONTH 间隔单位:月
QUARTER 间隔单位:季度
YEAR 间隔单位:年
SECOND_MICROSECOND 复合型,间隔单位:秒、毫秒,expr可以用两个值来分别指定秒和毫秒
MINUTE_MICROSECOND 复合型,间隔单位:分、毫秒
MINUTE_SECOND 复合型,间隔单位:分、秒
HOUR_MICROSECOND 复合型,间隔单位:小时、毫秒
HOUR_SECOND 复合型,间隔单位:小时、秒
HOUR_MINUTE 复合型,间隔单位:小时、分
DAY_MICROSECOND 复合型,间隔单位:天、毫秒
DAY_SECOND 复合型,间隔单位:天、秒
DAY_MINUTE 复合型,间隔单位:天、分
DAY_HOUR 复合型,间隔单位:天、小时
YEAR_MONTH 复合型,间隔单位:年、月

在这里插入图片描述
17、date_sub 和 subdate:日期减法运算

date_sub(date,INTERVAL expr type)

  • date:参数是合法的日期表达式;
  • expr:参数是你希望添加的时间间隔;
  • type和date_add函数中type一样

在这里插入图片描述
18、addtime:时间加法运算

addtime(time,expr)函数用于执行时间的加法运算。添加expr到time并返回结果。

  • time是一个时间或日期时间表达式;
  • expr是一个时间表达式

在这里插入图片描述
19、subtime:时间减法运算

subtime(time,expr)函数用于执行时间的减法运算。

  • time是一个时间或日期时间表达式;
  • expr是一个时间表达式

在这里插入图片描述
20、datediff:获取两个日期的时间间隔

datediff(date1,date2)返回起始时间date1和结束时间date2之间的天数。date1个date2为日期或date-and-time表达式。计算时只用到这些值日期部分。
在这里插入图片描述
21、date_format:格式化指定的日期

date_format(date,format)函数是根据format指定的格式显示date的值。date_format()函数接受两个参数:

  • date:是要被格式化的有效日期值;
  • format:是由预定义的说明符组成的格式字符串,每个说明符前面都有一个百分比符号%。格式和form_unixtime中的format一样。

在这里插入图片描述
22、weekday:获取指定日期在一周内的索引位置

weekday(date)函数返回date的星期索引(0=星期1,…,6=星期日)。
在这里插入图片描述

四、Mysql聚合函数

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

聚合函数用法简单,也较为常用,请读者自己练习,这里就不一一讲解了。

五、Mysql流程控制函数

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

1、if:判断

if(expr,v1,v2)函数,当expr为真时,返回v1,否则返回v2。

在这里插入图片描述
2、ifnull:判断是否为空

ifnull(v1,v2):v1为空返回v2,否则返回v1。
在这里插入图片描述
3、case:搜索语句,类似于java中的if…else if…else

类似java中的if…else if…else。有两种写法。

(1)方式 1

case <表达式>
	when <值1> then <操作>
	when <值2> then <操作>
	...
	else <操作>
end case;

(2)方式 2

case
	when <条件1> then <命令>
	when <条件2> then <命令>
	...
	else 命令
end case;

示例:

准备数据:
在这里插入图片描述
需求:查询所有学生信息,输出:姓名,性别(男、女、未知),如下:
在这里插入图片描述
在这里插入图片描述

六、其他函数

函数名称作用
version 数据库版本号
database 当前的数据库
user 当前连接用户
password 返回字符串密码
md5 返回字符串的md5数据

在这里插入图片描述
今天介绍函数比较多,大家收藏一下,慢慢消化,如果以后项目中需要用到本篇介绍的函数,可以回到这里看看哦。

posted @ 2022-08-11 21:59  江南大才子  阅读(1662)  评论(0编辑  收藏  举报