当前位置: 首页 > article >正文

MySQL 常用函数汇总(包括说明与举例)


天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。


我寄愁心与明月,随君直到夜郎西。
——《闻王昌龄左迁龙标遥有此寄》


文章目录

  • MySQL 常用函数汇总(包括说明与举例)
    • 1. 字符函数
      • 1.1 字符串拼接(concat(str1,str2,...))
      • 1.2 查找子串位置(instr(str, substr))
      • 1.3 获取字符串长度(length(str))
      • 1.4 字符左填充(lpad(str, len, fillstr))
      • 1.5 字符右填充(rpad(str, len, fillstr))
      • 1.6 子串替换(replace(str, substr, replacestr))
      • 1.7 字符串截取(substr(str, start, len))
      • 1.8 剔除字符串前后空格(trim(str))
      • 1.9 字符串字母转大写(upper(str))
      • 1.10 字符串字母转小写(lower(str))
      • 1.11 应用到实际查询
    • 2. 数学函数
      • 2.1 向上取整(ceil(x))
      • 2.2 向下取整(floor(x))
      • 2.3 取余(mod(x,y))
      • 2.4 绝对值(abs(x))
      • 2.5 平方根(sqrt(x))
      • 2.6 指数(pow(x,E))
      • 2.7 随机数(rand())
      • 2.8 四舍五入保留指定小数位(round(x, dlen))
      • 2.9 千分位(format())
      • 2.10 截取数值的位数(truncate(x,D))
      • 2.11 获取符号(sign())
      • 2.12 获取给定集合中的最大值(greatest())
      • 2.13 获取给定集合中的最小值(least())
      • 2.14 ip转数字(inet_aton(ip))
      • 2.15 将ip对应的数字转为ip地址(inet_ntoa(num))
      • 2.16 md5加密(md5(str))
      • 2.17 password加密(password(str))(可忽略)
      • 2.18 sha1加密(sha1(str))
      • 2.19 encode加密(encode(str,pass_str))
      • 2.20 decode加密(decode(str,pass_str))
    • 3. 时间函数
      • 3.1 获取系统当前时间-年月日时分秒(now())
      • 3.2 获取当前时间-年月日(curdate())
      • 3.3 获取当前时间-时分秒(curtime())
      • 3.4 获取年(year())
      • 3.5 获取月(month())
      • 3.6 获取日(day())
      • 3.7 获取时(hour())
      • 3.8 获取分(minute())
      • 3.9 获取秒(second())
      • 3.10 获取周(weekofyear())
      • 3.11 获取季(quarter())
      • 3.12 获取月最后一天(last_day())
      • 3.13 字符串转时间(str_to_date(str,format))
      • 3.14 时间转字符串(date_format(date,format))
      • 3.15 获取偏移后的时间(date_add())
      • 3.16 获取两个时间之间相差的天数(datediff(end_date,start_date))
      • 3.17 获取两个时间相差的时间(timestampdiff())
    • 4. 系统信息函数
      • 4.1 查看系统版本信息(version())
      • 4.2 获取当前连接唯一id(connection_id())
      • 4.3 查看当前正在使用的数据库(database())
      • 4.4 查看当前正在使用数据库-软件层面(schema())
      • 4.5 获取当前用户(user())
      • 4.6 获取当前用户(session_user())
      • 4.7 获取当前用户(system_user())
      • 4.8 获取当前用户(current_user())
      • 4.9 获取当前使用的字符集(charset())
      • 4.10 获取当前使用的字符串排列方式(collation())
      • 4.11 获取当前使用的字符集(show character set)
      • 4.12 查看当前正在连接的线程列表信息(show processlist)
      • 4.13 查看服务器状态变量的值(show status)
      • 4.14 查看服务器配置参数(show variables)
    • 5. 流程控制函数
      • 5.1 条件控制(if())
      • 5.2 判断是否为null(ifnull())
      • 5.3 等值判断case-when
      • 5.4 区间判断case-when
      • 5.5 聚合函数配合使用case-when
    • 6. 聚合函数
      • 6.1 平均值(avg(x))
      • 6.2 统计(count(x))
      • 6.3 最大值(max(x))
      • 6.4 最小值(min(x))
      • 6.5 求和(sum(x))
    • 7. 示例相关建表插值sql


MySQL 常用函数汇总(包括说明与举例)

MySQL函数分为单行函数和聚合函数,单行函数中又有字符函数、数学函数、日期函数、系统函数、流程控制函数等

为了不影响阅读体验,本文示例中相关的表数据对应的建表sql和插数据的sql都在文末贴出,可自行复制建表插值

1. 字符函数

用于处理字符串, 包括字符串的连接、比较、大小写转换等函数

1.1 字符串拼接(concat(str1,str2,…))

concat(str1,str2,…)函数,将字符串拼接,其中参数可以是多个,最后会将所有参数拼接成一个字符串

示例如下

select concat("作者", ":", "李白", " 男", " 汉族", " 高科技人才所在地人员", " 互联网冲浪选手") as 作者信息;

在这里插入图片描述

1.2 查找子串位置(instr(str, substr))

instr(str, substr)函数,在字符串str中查找子串substr的位置(索引),找到后返回子串在字符串中的索引,找不到则返回0

示例如下

select instr("这是一个很寂寞的天下着有些寂寞的雨", "天下") as 天下第一次出现的位置;

这里从1开始数,和索引的数法不一样
在这里插入图片描述

1.3 获取字符串长度(length(str))

length(str)函数,获取字符串长度,单位字节
utf-8字符集的数据一个英文占1个字节,一个中文占3个字节
gbk字符集的数据一个英文占1个字节,一个中文占2个字节

示例如下

select length("李白") as 字节长度;

在这里插入图片描述

1.4 字符左填充(lpad(str, len, fillstr))

lpad(str, len, fillstr)字符左填充,在字符串str的左边填充字符fillstr直到满足长度为len个字符

示例如下

select lpad("高堂明镜", 9, "人") as 左填充后的字符串;

这里高堂明镜四个字符,左侧添加五个人后达到9个字符
在这里插入图片描述
注:第二个参数len一定要大于第一个参数中字符的个数才能看到效果

1.5 字符右填充(rpad(str, len, fillstr))

rpad(str, len, fillstr)字符左填充,在字符串str的右边填充字符fillstr直到满足长度为len个字符

示例如下

select rpad("高堂明镜", 3, "人") as 右填充后的字符串;

在这里插入图片描述

1.6 子串替换(replace(str, substr, replacestr))

replace(str, substr, replacestr)子串替换,将str中的子串substr替换为目标字符replacestr

示例如下

select replace("千金散尽还复来", "散尽","聚财") as 替换后的字符串;

在这里插入图片描述
注:当实际应用中,replace只针对某个字段操作,无法全局查找替换,如需全局可尝试循环语句

1.7 字符串截取(substr(str, start, len))

substr(str, start, len)字符串截取,在字符串str中从start位置后截取长度为len的子串,如果不指定len则从start开始截取到末尾

示例如下

select substr("全栈还是Java,这是一个值得思考的问题", 4, 8) as 截取的子串;

从第4个字符后面开始,截取8个字符
在这里插入图片描述

注意:这里参数start的数值在str字符串中数的话从1开始,并非指索引
参数len也并非是指截取到的索引,而是从start个字符开始,截取长度为len的子串

1.8 剔除字符串前后空格(trim(str))

trim(str)剔除字符串前后空格,不会剔除字符串中间的空格

示例如下

select trim(" 忽如一夜春风来 千树万树梨花开 ") as 剔除空格后的字符串;

在这里插入图片描述

1.9 字符串字母转大写(upper(str))

upper(str)将字符串中的所有字母变为大写

示例如下

select upper("LiBai is a man") as 转大写后的字符串;

在这里插入图片描述

1.10 字符串字母转小写(lower(str))

lower(str)将字符串中的所有字母变为小写

示例如下

select lower("LiBai is a man") as 转小写后的字符串;

在这里插入图片描述

1.11 应用到实际查询

除了指定的字符串操作外,在实际应用中,我们可以将函数中的str换成我们表中的某个需要操作的字段

示例如下
如创建表tb_user_info
字段包含用户名username
并插入几条数据,其中包username值为李白

select replace(username, "李白", "李太白") as 替换后的姓名 from tb_user_info;

在这里插入图片描述

2. 数学函数

用于处理数学计算,包括绝对值、正弦、余弦、随机数等函数

2.1 向上取整(ceil(x))

ceil(x)向上取整, 返回>=参数x的最小整数,即获取大于等于指定数字的最小整数

示例如下

select ceil(2.4) as 向上取整后的值;
select ceil(2.8) as 向上取整后的值;

在这里插入图片描述

2.2 向下取整(floor(x))

floor(x)向下取整, 返回<=参数x的最大整数,即获取小于等于指定数字的最大整数

示例如下

select floor(2.4) as 向下取整后的值;
select floor(2.8) as 向下取整后的值;

在这里插入图片描述

2.3 取余(mod(x,y))

mod(x,y)取余,被除数x为正数则结果就是正数,被除数x为负数则结果为负数
x表示被除数
y表示除数

示例如下

select mod(13, 7) as 13除以7后取余;

在这里插入图片描述

2.4 绝对值(abs(x))

abs(x)函数,获取x的绝对值
abs时absolute的缩写

示例如下

select abs(-6);

在这里插入图片描述

2.5 平方根(sqrt(x))

sqrt(x)函数,获取x的平方根
sqrt是sqruar和root的缩写
sqruar平方,矩形
root根

示例如下

select sqrt(4);

在这里插入图片描述

2.6 指数(pow(x,E))

pow(x, E)指数计算,x为底数,E为指数,意为x的E次方

示例如下

select pow(4, 2) as 42次方;

在这里插入图片描述

2.7 随机数(rand())

rand()函数,用于生成随机数
注意,rand()无参数和rand(x)有参数的区别
rand()无参数生成一个[0,1]之间的float类型的随机数,此随机数是随机的且不可重复
rand(x)有参数生成一个以x为种子的随机数,每次使用相同的x值进行生成的随机数相同,该随机数生成可重复,故称为伪随机数
x为int类型的数字

示例如下

select rand(),rand(),rand(1),rand(1);

在这里插入图片描述

2.8 四舍五入保留指定小数位(round(x, dlen))

round(x, dlen)四舍五入后保留指定小数位,将x四舍五入保留dlen位小数
负数四舍五入则先将符号忽略,按照正数四舍五入后将符号加上

示例如下

select round(1.3573936478, 2) as 四舍五入保留2位小数;

在这里插入图片描述

2.9 千分位(format())

format(x,y)函数,对x进行千分位并保留y位小数(会进行四舍五入)

示例如下

select format(123456.123456,4);

在这里插入图片描述

2.10 截取数值的位数(truncate(x,D))

truncate(x, D)截取数值的位数,当D为正数时则表示保留小数点后的几位,当D为0则表示保留整数部分(即保留小数点后0位),当D为负数则表示从小数点往左数将D个整数位数字改为0并保留整数部分

示例如下

select truncate(313233.414243, 3) as 小数点后保留3位后的结果;

在这里插入图片描述

select truncate(313233.414243, 0) as 小数点后保留0位即取整后的结果;

在这里插入图片描述

select truncate(313233.414243, -3) as 小数点前三位改为0后取整的结果;

在这里插入图片描述

2.11 获取符号(sign())

sign(x)函数,获取x值的符号,如果是正数则返回1,如果是负数则返回-1,如果是0则返回0

示例如下

select sign(5), sign(-5), sign(0);

在这里插入图片描述

2.12 获取给定集合中的最大值(greatest())

greatest()函数,获取传入集合中最大的值

示例如下

select greatest(1,3,5,7,9,11,4,44,6);

在这里插入图片描述

2.13 获取给定集合中的最小值(least())

least()函数,获取传入集合中最大的值

示例如下

select least(1,3,5,7,9,11,4,44,6);

在这里插入图片描述

2.14 ip转数字(inet_aton(ip))

inet_aton(ip)函数,将ip地址转为数字

示例如下

select inet_aton('192.168.1.110');

在这里插入图片描述

2.15 将ip对应的数字转为ip地址(inet_ntoa(num))

inet_ntoa(num)函数,将ip数字值转为ip地址

示例如下

select inet_ntoa(3232235886);

在这里插入图片描述

2.16 md5加密(md5(str))

md5(str)函数,生成一个128位的加密串,返回一个32位的16进制数
如果str为null,则返回的值为null
不可逆

示例如下

select md5('libai') as md5加密后的值;

在这里插入图片描述

2.17 password加密(password(str))(可忽略)

password(str)函数,通常用于创建用户时对密码进行加密,所以这个参数在我现在的mysql工具中无法执行,报错
不可逆

示例如下

select password('libai') as password加密后的密码;

注:MySQL 5.7.6开始该函数已经被废弃,建议使用更安全的alter user进行设置密码

2.18 sha1加密(sha1(str))

sha1(str)函数,生成一个160位的加密串,返回一个40位的16进制数
不可逆

示例如下

select sha1('libai') as sha1加密后的密码;

在这里插入图片描述

2.19 encode加密(encode(str,pass_str))

encode(str,pass_str)函数,使用pass_str作为密钥对str进行加密
可逆

示例如下

select encode('libai','libaikey') as sha1加密后的密码;

2.20 decode加密(decode(str,pass_str))

decode(str,pass_str)函数,使用pass_str作为密钥对str进行加密
可逆

示例如下
将前面加密后的字符串拿过来

select decode('encode-libai','libaikey') as sha1解密后的密码;

或者

select decode(encode('libai','libaikey'),'libaikey') as sha1解密后的密码;

3. 时间函数

用于处理日期和时间,包括获取当前时间、当前日期等函数

严格来说时间是指时分秒,而年月日则是日期,当然日期也是时间

当我们使用日期或者时间转换时,会用到以下参数,分别代表不同的时间格式

符号含义
%a缩写星期名
%b缩写月名
%c月,数值(1-12)
%D带有英文前缀的月中的天(例如,Mon)
%d日,月的天,数值(00-31)
%e日,月的天,数值(0-31)
%f微秒
%H小时(00-23)
%h小时(1-12)
%I分钟,数值(00-59)
%i分钟,数值(00-59)
%j年的天(001-366)
%M月名(January-December)
%m月,数值(00-12)
%pAM或PM
%r时间,12小时(hh:mm AM或PM)
%S秒(00-59)
%s秒(00-59)
%T时间,24小时(hh:mm)
%U周(00-53),星期日是一周的第一天
%u周(00-53),星期一是一周的第一天
%V周(01-53),星期日是一周的第一天,与%X使用
%W星期名(Sunday, Monday, …, Saturday)
%Y年份,数值(4位数的年份,如2025)
%y年份,数值(2位数的年份,如25)

3.1 获取系统当前时间-年月日时分秒(now())

now()函数,获取系统当前时间,返回年月日时分秒

示例如下

select now() as 系统当前时间;

在这里插入图片描述

3.2 获取当前时间-年月日(curdate())

curdate()函数,获取系统当前年月日,不包含时分秒

示例如下

select curdate() as 当前时间年月日;

在这里插入图片描述

3.3 获取当前时间-时分秒(curtime())

curtime()函数,获取系统当前时分秒,不包含年月日

select curtime() as 当前时间时分秒;

在这里插入图片描述

3.4 获取年(year())

year()函数,获取年,需要传入参数,可以是日期类型也可以是函数

示例如下

select year(now()) as 当前时间年;

在这里插入图片描述

select YEAR("2024,10,25") as 当前时间年;

在这里插入图片描述

3.5 获取月(month())

month()函数,获取月,需要传入参数,可以是日期类型也可以是函数

示例如下

select month() as 当前时间月;

在这里插入图片描述

select MONTH("2025,06,10") as 当前时间月;

在这里插入图片描述

3.6 获取日(day())

day()函数,获取日,需要传入参数,可以是日期类型也可以是函数

示例如下

select day(now()) as 当前时间日;

在这里插入图片描述

select month("2025,06,10") as 当前时间日;

在这里插入图片描述

3.7 获取时(hour())

hour()函数,获取时,需要传入参数,可以是时间类型也可以是函数

示例如下

select hour(now()) as 当前时间小时;

在这里插入图片描述

select hour("2025,06,10") as 当前时间小时;

这里没有具体时间时默认0
在这里插入图片描述

select hour("2025,06,10 16") as 当前时间小时;

select hour("2025,06,10 16:14") as 当前时间小时;

select hour("2025,06,10 16:14:55") as 当前时间小时;

在这里插入图片描述

3.8 获取分(minute())

minute()函数,获取分,需要传入参数,可以是时间类型也可以是函数

示例如下

select minute(now()) as 当前时间分钟;

在这里插入图片描述

select minute("2025,06,10") as 当前时间分钟;

这里没有具体时间时,读取的是开头两位
在这里插入图片描述

select minute("2025,06,10 16") as 当前时间分钟;

日期后只有一位则值为0
在这里插入图片描述

select minute("2025,06,10 16:14") as 当前时间分钟;

参数包含分钟时,正确读取
在这里插入图片描述

select minute("2025,06,10 16:14:55") as 当前时间分钟;

在这里插入图片描述

3.9 获取秒(second())

second()函数,获取秒,需要传入参数,可以是时间类型也可以是函数

示例如下

select second(now()) as 当前时间秒钟;

在这里插入图片描述

select second("2025,06,10") as 当前时间秒钟;

这里没有具体时间时默认取第三第四位
在这里插入图片描述

select second("2025,06,10 16") as 当前时间秒钟;

在这里插入图片描述

select second("2025,06,10 16:14") as 当前时间秒钟;

在这里插入图片描述

select second("2025,06,10 16:14:55") as 当前时间秒钟;

在这里插入图片描述

3.10 获取周(weekofyear())

weekofyear()函数,获取传入参数时间所属的周数,需要传入参数,可以是时间类型也可以是函数

示例如下

select weekofyear(now()) as 当前时间所属的周数;

在这里插入图片描述

select weekofyear("2024,03,27") as 当前时间所属的周数;

在这里插入图片描述

3.11 获取季(quarter())

quarter()函数,获取传入参数时间所属的季度

示例如下

select quarter(curdate()) as 当前时间所属的季度;

在这里插入图片描述

select quarter("2025,04,24") as 当前时间所属的季度;

在这里插入图片描述

3.12 获取月最后一天(last_day())

last_day()函数,获取传入参数所属月份的最后一天的日期

示例如下

select last_day(now()) as 当月最后一天的日期;

在这里插入图片描述

select last_day("2025,02,01") as 当月最后一天的日期;

在这里插入图片描述

3.13 字符串转时间(str_to_date(str,format))

str_to_date(str,format)函数,将字符串按照指定格式转换成时间

示例如下

select str_to_date("2025,1,17", "%Y,%c,%d") as 转换后的时间;

select str_to_date("25,1,17", "%y,%c,%d") as 转换后的时间;

在这里插入图片描述

3.14 时间转字符串(date_format(date,format))

date_format(date,format)函数,将时间按照指定格式转换成字符串

示例如下

select date_format("2025/1/18","%Y年%m月%d日") as 转换后的字符串时间;

在这里插入图片描述

3.15 获取偏移后的时间(date_add())

date_add(time, interval num timeunit)函数,获取传入参数time偏移num后的时间
time 传入时间,可以是年月日时分秒
interval 固定写法,表示偏移或者计算
num 自然数,如0,1,-1等,当为正数表示之后,负数则表示之前
timeunit 时间单位,可以是年月日时分秒的英文单词,如year、month、day、hour、minute、second

示例如下

select curdate() as 当前日期, date_add(curdate(),interval -1 year) as 一年前, date_add(curdate(),interval 1 year) as 一年后, date_add(curdate(),interval 1 month) as 一个月后;

在这里插入图片描述

3.16 获取两个时间之间相差的天数(datediff(end_date,start_date))

datediff(end_date,start_date)函数,获取两个时间之间相差的天数

示例如下

select datediff(curdate(),"2000-01-10") as 出生天数;

在这里插入图片描述

select concat("出生",datediff(curdate(),"2000-01-10"),"天") as 出生天数;

在这里插入图片描述

3.17 获取两个时间相差的时间(timestampdiff())

timestampdiff(unit,start,end)函数,获取两个时间相差的时间
单位unit可以是如下单位

单位含义
year年份
month月份
day
hour小时
minute分钟
second
microsecond微秒
week周数
quarter季度

示例如下

select timestampdiff(year,"2004-08-28",curdate()) as 相差年数;

在这里插入图片描述

4. 系统信息函数

用于获取MySQL数据库系统信息,包括获取数据库名、当前用户、数据库版本等的函数

4.1 查看系统版本信息(version())

version()函数,查看MySQL系统版本信息

示例如下

select version();

在这里插入图片描述

4.2 获取当前连接唯一id(connection_id())

connection_id()函数,查看当前登入用户的唯一连接ID‌
注,不会一直累加,不同情况返回的值可能不一样,需要研究一下计数机制

示例如下

select connection_id() as 当前用户连接次数;

在这里插入图片描述

4.3 查看当前正在使用的数据库(database())

database()函数,查看当前正在使用的数据库

示例如下

select database();

在这里插入图片描述

4.4 查看当前正在使用数据库-软件层面(schema())

schema()函数,查看当前正在使用的数据库,软件层面,可以把database等同于schema理解

示例如下

select schema();

在这里插入图片描述

4.5 获取当前用户(user())

user()函数,获取当前用户,与system_user()、session_user()函数等价,返回用户名和主机名

示例如下

select user();

在这里插入图片描述

4.6 获取当前用户(session_user())

session_user()函数,获取当前用户,与user()、system_user()函数等价,返回用户名和主机名

示例如下

select session_user();

在这里插入图片描述

4.7 获取当前用户(system_user())

system_user()函数,获取当前用户,与user()、session_user()函数等价,返回用户名和主机名

示例如下

select system_user();

在这里插入图片描述

4.8 获取当前用户(current_user())

current_user()函数,获取当前用户
与上面三个函数有所不同的是,current_user()函数在MySQL会话使用代理用户进行时,返回的时代理用户的身份,而前面三个都会返回原始用户的身份

示例如下

select current_user();

在这里插入图片描述

4.9 获取当前使用的字符集(charset())

charset()函数,获取当前使用的字符集

示例如下

select charset('STR');

在这里插入图片描述

字符集决定表中可以存储那种类型的字符
其中常见的几种字符集如下
utf8
utf8mb4
gbk
big5
ucs2
binary
latin1
等等

4.10 获取当前使用的字符串排列方式(collation())

collation()函数,获取当前使用的字符串排列方式

示例如下

select collation("aaa");

在这里插入图片描述

4.11 获取当前使用的字符集(show character set)

show character set,获取系统可以使用的字符集

示例如下

show character set;

在这里插入图片描述

4.12 查看当前正在连接的线程列表信息(show processlist)

show processlist 展示系统正在连接的线程信息列表

除了展示当前连接的线程外,还可以展示未连接
show all processlist 展示所有连接和未连接的线程信息
示例如下

show processlist;

在这里插入图片描述

结果字段说明

字段含义
Id连接的标识符
User执行连接的MySQL用户名
Host连接的主机名或IP地址
db当前正在使用的数据库
Command当前执行的命令类型,如Query或Sleep
Time连接已经运行的时间,单位秒
State连接的当前状态
Info当前执行的SQL语句或其他相关信息

4.13 查看服务器状态变量的值(show status)

查看服务器状态使用show status命令,可以查看服务器所处的状态变量值,如Aborted_clients、Aborted_connects等

show status;

在这里插入图片描述

4.14 查看服务器配置参数(show variables)

查看MySQL服务器的配置参数使用show variables

show variables;

在这里插入图片描述

除此之外还可以使用模糊查询,如查看超时相关的配置参数

show variables like '%timeout%';

在这里插入图片描述

5. 流程控制函数

用于选择sql语句中的控制条件,包括if语句、case语句、where语句等

5.1 条件控制(if())

if(expr,v1,v2)函数,如果expr为true,则返回v1,如果expr为false,则返回v2,实现了if-else的效果

示例如下(建表和插值sql语句请参考文末表tb_if_score

select score,if(score<60,"不及格","及格") as 是否及格 from tb_if_score;

在这里插入图片描述

5.2 判断是否为null(ifnull())

ifnull()函数,判断v1是否为null,如果v1不为null则返回v1,如果v1为null则返回v2

示例如下

select ifnull(3,4),ifnull(null,4);

在这里插入图片描述

5.3 等值判断case-when

实现多条件的查询值
用法:

case 字段或表达式 when1 then 要显示的值1或别名1 when2 then 要显示的值2或别名2 else 要显示的值n或别名n end

注,when then组合可以有多个

示例如下(建表和插值sql语句请参考文末表tb_if_score

select score, case score when 80 then "精准" when 60 then "优雅" else "其他" end as "分数类型" from tb_if_score;

在这里插入图片描述

5.4 区间判断case-when

实现if-else if-else的效果
用法:

case 字段或表达式 when 条件1 then 要显示的值1或别名1 when 条件2 then 要显示的值2或别名2 else 要显示的值n或别名n end

注,when then组合可以有多个

示例如下(建表和插值sql语句请参考文末表tb_if_score

select score, case score when score>=60 and score<80 then "及格" when score>=80 and score<100 then "优秀" when score=100 then "王炸" else "不及格" end as "分数类型" from tb_if_score;

在这里插入图片描述

5.5 聚合函数配合使用case-when

case-when和聚合函数联用

示例如下(建表和插值sql语句请参考文末表tb_if_score

select max(score) 最高分,min(socre) 最低分,avg(score) 平均分,
sum(case when score>60 then 1 else 0 end)/count(*) 及格率,
sum(case when scor>=70 and score<80 then 1 else 0 end)/count(*) 中等率,
sum(case when scor>=80 and score<90 then 1 else 0 end)/count(*) 优良率,
sum(case when scor>=90 and then 1 else 0 end)/count(*) 优秀率,
from tb_if_score;

6. 聚合函数

6.1 平均值(avg(x))

avg(x)函数,返回指定组的平均值,空值会被忽略,x的值需整型或小数类型

示例如下

select avg(score) as 成绩平均值 from tb_if_score;

6.2 统计(count(x))

count(x)函数,返回指定组中项目的总数

示例如下

select count(student_id) as 班级人数 from tb_if_score;

6.3 最大值(max(x))

max(x)函数,返回指定数据组的最大值,x的值需整型或小数类型或时间类型

示例如下

select max(score) as 最高成绩 from tb_if_score;

6.4 最小值(min(x))

min(x)函数,返回指定数据组的最小值,x的值需整型或小数类型或时间类型

示例如下

select min(score) as 最低成绩 from tb_if_score;

6.5 求和(sum(x))

sum(x)函数,返回指定数据组的总和,只能用于数字列,空值会被忽略,,x的值需整型或小数类型

示例如下

select sum(score) as 成绩总和 from tb_if_score;

7. 示例相关建表插值sql

tb_if_score
建表

create table tb_if_score(
    id int auto_increment primary key,
    student_id varchar(20) not null default "" comment "学生id",
    score int not null default 0 comment "成绩"
);

插值

insert into tb_if_score (student_id, score) values ("081413301",45), ("081413302",80), ("081413303",64), ("081413304",55), ("081413305",62), ("081413306",77), ("081413307",89), ("081413308",32), ("081413309",92), ("081413310",66);

感谢阅读,祝君暴富!


版权声明:

  • 作者:寒山李白
  • 博客地址:https://hanshan.blog.csdn.net/
  • 版权:本作品采用《创作共享许可证》进行许可,根据该许可授权的内容可在符合本许可证条款的前提下自由使用、、修改和创作衍生作品。

版权许可介绍:
本文采用CC BY-NC-SA许可证
此许可允许在使用者仅出于非商业目的以任何媒体或格式分发、重新混合、改编和构建材料,并且前提是注明创作者。如果您重新混合、改编或基于该材料进行构建,则必须按照相同的条款对修改后的材料进行许可。

更多信息请访问以下网址查看:
版权官网 https://creativecommons.org/licenses/by-nc-sa/4.0/
中文翻译 https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh-hans



http://www.kler.cn/a/518515.html

相关文章:

  • 破解浏览器渲染“死锁”:CSS与JS如何影响页面加载速度?
  • hexo + Butterfly搭建博客
  • MATLAB提供的颜色映射表colormap——伪彩色
  • 案例研究丨浪潮云洲通过DataEase推进多维度数据可视化建设
  • 【MFC】C++所有控件随窗口大小全自动等比例缩放源码(控件内字体、列宽等未调整) 20250124
  • C#设置winform窗体自动适应不同分辨率的电脑
  • 使用rsync+inotify简单实现文件实时双机双向同步
  • IDEA工具下载、配置和Tomcat配置
  • 【UE5插件】RuntimeSpeechRecognizer
  • 32、【OS】【Nuttx】OSTest分析(1):stdio测试(二)
  • 深入理解MySQL事务(万字详)
  • Zemax 非序列模式下的颜色检测器和颜色混合
  • Windows10安装MySQL找不到MSVCR120.dll和MSVCP120.dll问题解决
  • Python脚本自动删除C盘临时文件夹:scoped_dir* 开头的文件夹
  • 汽车敏捷开发:项目经理如何精准跟进项目流程
  • VMware虚拟机安装macOS11
  • C语言练习(23)
  • 开源软件协议介绍
  • 代码随想录 二叉树 test 2
  • 2025美赛数学建模B题 管理可持续旅游业保姆级教程讲解|模型讲解
  • 第19篇:python高级编程进阶:使用Flask进行Web开发
  • 基于Netty的自定义协议栈设计与编解码技术解析
  • 基于Flask的天猫美妆销售数据分析系统的设计与实现
  • PortSwigger靶场练习---跨站点请求伪造:CSRF vulnerability with no defenses没有防御措施的 CSRF 漏洞
  • 导出地图为pdf文件
  • [极客大挑战 2019]Upload1