MySQL8 常用函数

MySQL8 常用函数,MySQL8教程,MySQL8 常用函数与示例等。

【全栈教程】:https://try8.cn/article
教程目录:
教程内容:
最近更新:2023-04-17

一、MySQL8 常用函数示例

1.1、类型转换函数

select 1 + '1'; //隐式转换成数字
select cast(1 as char(10)); //cast 示例,显式转换成指定类型
select convert(1, char(10)); //convert 示例,显式转换成指定类型
select convert('abc' using utf8); //convert 示例,显式转换成指定编码


1.2、流程控制函数

select case 1 when 1 then '11' when 2 then '22' else 'xx' end; //case 示例
select if(1<2, 'yes', 'no'); //if 示例,第一个表达式为真则返回第二个参数,否则返回第三个参数
select ifnull(null, 'not null'); //ifnull 示例,第一个参数不是 null 则返回第一个 ,否则返回第二个
select nullif(1, 1); //nullif 示例,两个参数值相同返回 null,否则返回第一个参数


1.3、数学计算函数

select abs(-1); //返回绝对值
select ceiling(1.11); //返回不小于参数的最小整数值,ceil 是其缩写
select floor(1.11); //返回不大于参数的最大整数值
select conv('A', 16, 10); //将 16 进制 'A' 转换成 10 进制
select truncate(1.11, 1); //返回截断到指定小数位


1.4、日期时间函数

select curdate(); //返回当前日期
select curtime(); //返回当前时间
select now(); //返回当前日期和时间
select utc_date(); //返回当前UTC日期
select utc_time(); //返回当前UTC时间
select utc_timestamp(); //返回当前UTC日期和时间
select microsecond('2023-01-01 01:01:01.000001'); //返回微秒
select second('2023-01-01 01:01:01.000001'); //返回秒
select minute('2023-01-01 01:01:01.000001'); //返回分
select hour('2023-01-01 01:01:01.000001'); //返回时
select day('2023-01-01 01:01:01.000001'); //返回日
select month('2023-01-01 01:01:01.000001'); //返回月
select year('2023-01-01 01:01:01.000001'); //返回年


1.5、文本处理函数

select concat('try', '8'); //返回连接字符串
select concat_ws(',', 'hello', 'try8'); //返回带分隔符的连接字符串
select lcase('TRY8'); //返回小写
select ucase('try8'); //返回大写
select left('try8', 3); //返回左侧指定长度的字符串
select right('try8', 1); //返回右侧指定长度的字符串
select length('try8'); //返回字节长度
select trim(' try8 '); //返回左侧和右侧空格
select ltrim(' try8'); //删除左侧空格
select rtrim(' try8'); //删除右侧空格
select space(3); //返回指定数量的空格
select repeat(' try8', 3); //返回重复指定次数的字符串
select replace('try8', '8', '1'); //返回替代指定字符的字符串
select reverse('try8'); //返回反转字符串
select substring('try8', 1, 3); //返回指定位置的字符串
select to_base64('try8'); //返回base64编码的字符串


1.6、加密压缩函数

select md5('try8'); //MD5加密
select sha1('try8'); //SHA1加密
select sha2('try8', 256); //SHA2加密, 可选 0、224、256、384、512,0 相当于 256
select validate_password_strength('try8'); //检测密码强度 0-100,需安装 validate_password
select random_bytes(16); //生成可选 1-1024 位的二进制字符串的随机数
select length(compress(repeat('a',100))); //返回压缩的二进制字符串长度
select uncompress(compress('try8')); //解压缩二进制字符串
# AES 加解密示例
show variables like '%block_encryption_mode%';
set block_encryption_mode = 'aes-256-cbc';
set @key = sha2('try8',256);
set @vector = random_bytes(16);
set @crypt_en = aes_encrypt('try8', @key, @vector);
set @crypt_de = aes_decrypt(@crypt_en, @key, @vector);
select cast(@crypt_de as char(80));


1.7、聚合函数示例

select min(col_value), max(col_value) from try8_db group by col_name; //返回最小、大值
select sum(col_value) from try8_db group by col_name; //返回求和
select avg(col_value) from try8_db group by col_name; //返回平均值
select count(*) from try8_db group by col_name; //返回行数
select count(distinct col_value) from try8_db group by col_name; //返回不同值的行数
select group_concat(col_value) from try8_db group by col_name; //返回一个连接的字符串


1.8、窗口函数示例

# rank:计算当前行在分区内的排名,有间隔
select try8_id, rank() over (partition by try8_name order by try8_col desc) try8_rank from try8_tb;
# dense_rank:计算当前行在分区内的排名
select try8_col, dense_rank() over (order by try8_col) try8_rank from try8_tb; 
# cume_dist:计算一组值的累积分布
select *, cume_dist() over (order by try8_score) cd_value from try8_tb;
# first_value:计算窗口分区中第一行的值
select try8_name, 
  try8_times, 
  first_value(try8_name) over (order by try8_times) try8_lv 
  from try8_tb; 
# last_value:计算窗口分区中最后一行的值
select try8_name, 
  try8_times, 
  last_value(try8_name) over (order by try8_times) try8_lv 
from try8_tb; 
# row_number:计算当前行所在分区的序号,从1开始
select 
  row_number() over (partition by try8_name order by try8_col desc) try8_rn 
from try8_tb; 


二、MySQL8 常用函数 总结

MySQL8教程 - MySQL8 常用函数,介绍 MySQL 和 MySQL8 数据库,从 MySQL8 类型转换函数开始,逐步到流程控制函数、数学计算函数、日期时间函数、文本处理函数、加密压缩函数,通篇实用易懂,让 MySQL8 入门更加快速和简单。


《MySQL8教程》主打原创、全部免费,欢迎学习和转载,如需交流请加微信号:try8_cn。