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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/958972.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【中间件快速入门】什么是Redis

现在后端开发会用到各种中间件&#xff0c;一不留神项目可能在哪天就要用到一个我们之前可能听过但是从来没接触过的中间件&#xff0c;这个时候对于开发人员来说&#xff0c;如果你不知道这个中间件的设计逻辑和使用方法&#xff0c;那在后面的开发和维护工作中可能就会比较吃…

计算机网络 (57)改进“尽最大努力交付”的服务

前言 计算机网络中的“尽最大努力交付”服务是网络层的一种数据传输方式。这种服务的特点是网络层只负责尽力将数据报从源端传输到目的端&#xff0c;而不保证数据传输的可靠性。 一、标记与分类 为数据分组打上标记&#xff1a; 给不同性质的分组打上不同的标记&#x…

【opencv】第9章 直方图与匹配

第9章 直方图与匹配 9.1 图像直方图概述 直方图广泛运用于很多计算机视觉运用当中&#xff0c;通过标记帧与帧之间显著的边 缘和颜色的统计变化&#xff0c;来检测视频中场景的变化。在每个兴趣点设置一个有相近 特征的直方图所构成“标签”,用以确定图像中的兴趣点。边缘、色…

爬虫基础之爬取某站视频

目标网址:为了1/4螺口买小米SU7&#xff0c;开了一个月&#xff0c;它值吗&#xff1f;_哔哩哔哩_bilibili 本案例所使用到的模块 requests (发送HTTP请求)subprocess(执行系统命令)re (正则表达式操作)json (处理JSON数据) 需求分析: 视频的名称 F12 打开开发者工具 or 右击…

第五天 Labview数据记录(5.1 INI配置文件读写)

5.1 INI配置文件读写 INI配置文件是一种简单的文本文件&#xff0c;通常用于存储软件的配置信息。它具有以下作用&#xff1a; 存储软件配置参数方便软件的维护和更新提高软件的灵活性和可扩展性便于用户修改和共享配置 5.1.1 前面板 1&#xff09;新建项目SaveData_Exampl…

springboot 文件下载

在springboot中&#xff0c;执行如下代码实现文件下载 GetMapping("/file/download/test")public void Download(HttpServletResponse response){try {String path "XXXXXXXXXXXX";//文件路径File file new File(path);// 读到流中InputStream inputStre…

PaddleSeg 从配置文件和模型 URL 自动化运行预测任务

git clone https://github.com/PaddlePaddle/PaddleSeg.git# 在ipynb里面运行 cd PaddleSegimport sys sys.path.append(/home/aistudio/work/PaddleSeg)import os# 配置文件夹路径 folder_path "/home/aistudio/work/PaddleSeg/configs"# 遍历文件夹&#xff0c;寻…

三维激光扫描-用智能检测系统提升效率

当下&#xff0c;企业对生产效率和质量控制的要求越来越高。传统的检测方法往往难以满足高精度、快速响应的需求。三维激光扫描技术结合智能检测系统&#xff0c;为工业检测带来了革命性的变革。 传统检测方法的局限性 传统检测方法主要依赖于人工测量和机械检测工具&#xf…

WebAssembly视频检测在社区创作平台的落地与实践 | 得物技术

一、背景&现状 创作者服务平台作为得物为社区创作者提供的PC端视频发布入口&#xff0c;地位非常重要。且随着功能的升级迭代&#xff0c;用户群体也越来越多。但我们偶尔会收到如下反馈&#xff1a; 视频损坏&#xff0c;无法播放视频模糊曝光度问题黑屏&#xff0c;只有…

Poetry shell --> poetry-plugin-shell

当前环境&#xff1a;Poetry (version 2.0.1) python Python 3.11.8 根据&#xff1a;https://python-poetry.org/docs/managing-environments/#bash-csh-zsh 在新版本的 poetry 执行 poetry shell 会报错 这个功能目前需要使用 poetry-plugin-shell 插件 关于 poetry-plugin-s…

《论文翻译》KIMI K1.5:用大语言模型扩展强化学习

文章目录 KIMI K1.5技术报告摘要 1. 引言2. 方法&#xff1a;基于大语言模型的强化学习2.1 强化学习提示集整理2.2 长思维链监督微调2.3 强化学习2.3.1 问题设定2.3.2 策略优化2.3.3 长度惩罚2.3.4 采样策略2.3.5 训练方法的更多细节 2.4 长到短&#xff1a;短思维链模型的上下…

Linux 安装 Nirgam

目录 Linux 安装 Nirgam声明安装 错误修正⭐修正后需要重新编译 参考资料 Linux 安装 Nirgam 声明 ⭐make失败调整重试前一定先 make clean 一下&#xff01;&#xff01;&#xff01;特别感谢一篇博客园的博客&#xff08;参考文献1&#xff09;&#xff0c;帮我解决了很多问…

分享一款开源好用的博客管理系统

ThriveX 现代化博客管理系统 &#x1f389; &#x1f525; 首先最重要的事情放第一 开源不易&#xff0c;麻烦占用 10 秒钟的时间帮忙点个免费的 Star&#xff0c;再此万分感谢&#xff01; 下面开始进入主题↓↓↓ &#x1f308; 项目介绍&#xff1a; Thrive 是一个简而不…

Kafka 深入服务端 — 时间轮

Kafka中存在大量的延迟操作&#xff0c;比如延时生产、延时拉取和延时删除等。Kafka基于时间轮概念自定义实现了一个用于延时功能的定时器&#xff0c;来完成这些延迟操作。 1 时间轮 Kafka没有使用基于JDK自带的Timer或DelayQueue来实现延迟功能&#xff0c;因为它们的插入和…

九、CSS工程化方案

一、PostCSS介绍 二、PostCSS插件的使用 项目安装 - npm install postcss-cli 全局安装 - npm install postcss-cli -g postcss-cli地址&#xff1a;GitHub - postcss/postcss-cli: CLI for postcss postcss地址&#xff1a;GitHub - postcss/postcss: Transforming styles…

FFPlay命令全集合

FFPlay是以FFmpeg框架为基础&#xff0c;外加渲染音视频的库libSDL构建的媒体文件播放器。 ffplay工具下载并播放视频&#xff0c;可以辅助卡看流信息。 官网下载地址&#xff1a;http://ffmpeg.org/download.html#build-windows 下载build好的exe程序&#xff1a; 此处下载…

wangEditor富文本编辑器,Laravel上传图片配置和使用

文章目录 前言步骤1. 构造好前端模版2. 搭建后端存储3. 调试 前言 由于最近写项目需要使用富文本编辑器&#xff0c;使用的是VUE3.0版本所以很多不兼容&#xff0c;实际测试以后推荐使用wangEditor 步骤 构造好前端模版搭建后端存储调试 1. 构造好前端模版 安装模版 模版安…

利用 SAM2 模型探测卫星图像中的农田边界

将 Segment Anything Model Version 2 应用于卫星图像以检测和导出农业地区田地边界的分步教程 &#x1f31f; 简介 手动绘制田地边界是最耗时的任务之一&#xff0c;其准确性取决于绘制者的表现。然而&#xff0c;精确的边界检测在很多领域都有应用。例如&#xff0c;假设您…

数据库管理-第287期 Oracle DB 23.7新特性一览(20250124)

数据库管理287期 20245-01-24 数据库管理-第287期 Oracle DB 23.7新特性一览&#xff08;20250124&#xff09;1 AI向量搜索&#xff1a;算术和聚合运算2 更改Compatible至23.6.0&#xff0c;以使用23.6或更高版本中的新AI向量搜索功能3 Cloud Developer包4 DBMS_DEVELOPER.GET…

第13章 深入volatile关键字(Java高并发编程详解:多线程与系统设计)

1.并发编程的三个重要特性 并发编程有三个至关重要的特性&#xff0c;分别是原子性、有序性和可见性 1.1 原子性 所谓原子性是指在一次的操作或者多次操作中&#xff0c;要么所有的操作全部都得到了执行并 且不会受到任何因素的干扰而中断&#xff0c;要么所有的操作都不执行…