select 1 + '1'; //隐式转换成数字 select cast(1 as char(10)); //cast 示例,显式转换成指定类型 select convert(1, char(10)); //convert 示例,显式转换成指定类型 select convert('abc' using utf8); //convert 示例,显式转换成指定编码
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,否则返回第一个参数
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); //返回截断到指定小数位
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'); //返回年
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编码的字符串
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));
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; //返回一个连接的字符串
# 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 常用函数,介绍 MySQL 和 MySQL8 数据库,从 MySQL8 类型转换函数开始,逐步到流程控制函数、数学计算函数、日期时间函数、文本处理函数、加密压缩函数,通篇实用易懂,让 MySQL8 入门更加快速和简单。
《MySQL8教程》主打原创、全部免费,欢迎学习和转载,如需交流请加微信号:try8_cn。