建议先阅读我之前的博客,掌握一定的MySQL前置知识后再阅读本文,链接如下:
带你从入门到精通——MySQL(一. 基础知识)-CSDN博客
带你从入门到精通——MySQL(二. 单表查询)-CSDN博客
带你从入门到精通——MySQL(三. 多表查询)-CSDN博客
目录
4.1.4 MOD函数和POW函数
四. MySQL函数基础
在MySQL中有很多的内置函数,除了之前介绍过的MAX()、SUM()等聚合函数之外,还有很多其他内置函数:如数值函数、字符串函数、时间日期函数、流程控制函数、开窗函数等,下面为大家一一介绍MySQL中常用的内置函数。
注意:可以通过HELP 函数名来查看指定函数的帮助文档,示例: HELP COUNT。
4.1 数值函数
4.1.1 ROUND函数
ROUND函数的格式为ROUND(x,y),x表示待处理的数据,y表示要保留的小数位数,该函数的作用是对x进行四舍五入的操作,y参数可省,默认为0即只保留整数。
SELECT ROUND(1.7);
-- 输出2
SELECT ROUND(1.3333, 2);
-- 输出1.33
SELECT ROUND(2.600, 2);
-- 输出2.60
4.1.2 FORMAT函数
FORMAT函数的格式为FORMAT(x,y),x表示待处理的数据,y表示要保留的小数位数,该函数的作用与ROUND函数相似,同样会对x进行四舍五入的操作,但是FORMAT函数会对输出的数据进行格式化,如果数据值很大推荐使用FORMAT函数,更加方便阅读,其中y参数不可省。
SELECT FORMAT(1054501.6, 2);
-- 输出1,054,501.60
SELECT FORMAT(1164645.123, 2);
-- 输出1,164,645.12
SELECT FORMAT(124541.169, 1);
-- 输出124,541.2
4.1.3 FLOOR函数和CEIL函数
这两个函数都是取整函数,只接收一个x参数,表示待处理的数据,不同的是FLOOR函数对x进行向下取整,而CEIL函数对x进行向下取整。
SELECT FLOOR(-2.3);
-- 输出-3
SELECT CEIL(4.1);
-- 输出5
4.1.4 MOD函数和POW函数
MOD函数的格式为MOD(x,y),x表示被除数,y表示除数,该函数输出x除以y后的余数;POW函数的格式为POW(x,y),x表示底数,y表示指数,该函数输出x的y次幂。
SELECT MOD(7, 3);
-- 输出1
SELECT MOD(16, 4);
-- 输出0
SELECT POW(3, 2);
-- 输出9
SELECT POW(7, 1);
-- 输出7
4.1.5 RAND函数
RAND函数会输出一个0到1之间的随机数,包含0,不包含1,其格式为RAND(x),该函数可以接收一个参数x,x表示随机数种子,用于固定随机数的生成,使得数据能够复现,如果使用同一个随机数种子,生成的随机数序列一定相同。
4.2 字符串函数
4.2.1 LOWER函数和UPPER函数
LOWER函数和UPPER函数都是对字符串进行操作的函数,它们都接收一个字符串参数,LOWER函数会把该字符串中的英文字母转换为小写,而UPPER函数会把该字符串中的英文字母转换为大写。
SELECT LOWER('Hello MySQL!');
-- 输出'hello mysql!'
SELECT UPPER('Hello MySQL!');
-- 输出'HELLO MYSQL!'
4.2.2 REPEAT函数和REVERSE函数
REPEAT函数能够拼接多个相同的字符串,该函数的格式为REPEAT(x,y),x表示待拼接的字符串,y表示重复拼接的次数。
SELECT REPEAT('感谢点赞', 1);
-- 输出'感谢点赞'
SELECT REPEAT('感谢收藏', 3);
-- 输出'感谢收藏感谢收藏感谢收藏'
REVERSE函数能反转整个字符串,该函数接收一个待处理的字符串,并输出将该字符串反转后的字符串。
SELECT REVERSE('123456789');
-- 输出'789654321'
4.2.3 CONCAT函数和CONCAT_WS函数
CONCAT函数和CONCAT_WS函数都用于多个字符串的拼接操作,都可以接收多个字符串作为参数,不同的是CONCAT_WS函数的第一个参数表示分隔符,会通过该分隔符对字符串进行拼接,而CONCAT函数只能对多个字符串进行直接拼接。
SELECT CONCAT('点赞', '收藏', '关注');
-- 输出'点赞收藏关注'
SELECT CONCAT_WS('+', '点赞', '收藏', '关注');
-- 输出'点赞+收藏+关注'
4.2.4 REPLACE函数
REPLACE函数用于替换字符串中的某些字符,该函数的格式为REPLACE(x,y,z),其中x表示待处理的字符串,y表示x中需要被替换的字符,z表示替换为的字符。
SELECT REPLACE('点赞收藏关注点赞收藏关注', '点赞', '');
-- 输出'收藏关注收藏关注'
SELECT REPLACE('不点赞不收藏不关注不点赞不收藏不关注', '不', '要');
-- 输出'要点赞要收藏要关注要点赞要收藏要关注'
4.2.5 字符串截取函数
常用的字符串截取函数主要有三个,SUBSTR函数、LEFT函数以及RIGHT函数。
SUBSTR函数的格式为SUBSTR(x,y,z),表示从x字符串的第y个字符(注意这里从1开始计数,即字符串开头的字符为第1个字符)往后截取z个字符,参数z可省略,表示截取到该字符串的末尾,最后输出完成截取后的子串。
LEFT函数和RIGHT函数都接收x,y两个参数,x参数表示待处理的字符串,y参数表示需要截取的字符个数,不同的是LEFT函数表示从左截取y个字符,而RIGHT函数表示从右截取y个字符。
SELECT SUBSTR('----点赞收藏关注----', 5, 6);
-- 输出'点赞收藏关注'
SELECT LEFT('感谢点赞收藏关注感谢', 8);
-- 输出'点赞收藏关注感谢'
SELECT RIGHT('感谢点赞收藏关注感谢', 8);
-- 输出'感谢点赞收藏关注'
4.2.6 CHAR_LENGTH函数和LENGTH函数
CHAR_LENGTH函数和LENGTH函数都是用于获取长度的函数,都只接收一个x参数,表示待处理的字符串,不同的地方是CHAR_LENGTH函数获取的是字符的长度,每个字母、数字、汉字等字符的字符长度都为1,而LENGTH函数获取的是存储字节的长度,在URF8的编码格式中每个字母、数字的存储字节长度为1,汉字的存储长度为3。
SELECT CHAR_LENGTH('123点赞abc');
-- 输出8
SELECT LENGTH('123点赞abc');
-- 输出12
4.3 时间日期函数
4.3.1 获取当前时间的函数
获取当前时间的函数主要有以下三个NOW函数、CURRENT_DATE函数以及CURRENT_TIME函数,NOW函数能获取当前的年月日时分秒,CURRENT_DATE函数获取当前的年月日,CURRENT_TIME函数获取当前的时分秒。
-- 获取当前datetime类型的时间
SELECT NOW();
-- 获取当前date类型的时间
SELECT CURRENT_DATE();
-- 获取当前time类型的时间
SELECT CURRENT_TIME();
4.3.2 计算时间差的函数
计算时间差的函数主要有以下四个DATE_ADD函数、DATE_SUB函数、DATEDIFF函数、TIMESTAMPDIFF函数。
DATE_ADD函数以及DATE_SUB函数的作用相似,用于计算指定间隔的时间并输出,这两个函数都接收一个date类型的时间参数x,以及一个整数类型的参数y,不同的是DATE_ADD函数输出x的之后y天/月/年的日期,DATE_SUB函数输出x的之前y天/月/年的日期。
SELECT DATE_ADD('2024-11-21', INTERVAL 30 DAY);
-- 输出2024-12-21
SELECT DATE_ADD('2024-11-21', INTERVAL 2 MONTH);
-- 输出2025-01-21
SELECT DATE_ADD('2024-11-21', INTERVAL 1 YEAR);
-- 输出2025-11-21
SELECT DATE_SUB('2024-11-21', INTERVAL 60 DAY);
-- 输出2024-09-22
DATEDIFF函数、TIMESTAMPDIFF函数则是都用于计算两个时间参数的差值,其中DATEDIFF函数接收x,y两个参数,计算并输出这两个时间参数之间的天数差,注意该函数是使用参数x减去参数y来获得天数差,TIMESTAMPDIFF函数,接收x,y,z三个参数,x表示计算的是年数差/月数差/天数差,x参数输入值只能为YEAR/MONTH/DAY三者之一,y和z表示两个时间参数,注意与DATEDIFF函数不同的前者减后者不用,TIMESTAMPDIFF函数是使用z减去y即后者减前者来获得时间之差。
SELECT DATEDIFF('2024-11-21 11:00:00', '2024-11-19 08:00:00');
-- 输出2
SELECT TIMESTAMPDIFF(MONTH, '2024-9-21 04:00:00', '2024-11-21 9:00:00');
-- 输出2
SELECT TIMESTAMPDIFF(DAY, '2024-11-10 04:00:00', '2024-11-21 9:00:00');
-- 输出11
4.3.3 获取年月日时分秒的函数
获取年月日的函数主要有:YEAR用于获取年份、MONTH用于获取月份、DAY用于获取日期、HOUR用于获取小时数、MINUTE用于获取分钟数、SECOND用于获取秒数,WEEKDAY用于计算时间日期是星期几(0是周一,1是周二,依次类推)。
SELECT YEAR('2024-11-21 11:00:59');
-- 输出2024
SELECT MONTH('2024-11-21 11:00:59');
-- 输出11
SELECT DAY('2024-11-21 11:00:59');
-- 输出21
SELECT HOUR('2024-11-21 11:00:59');
-- 输出11
SELECT MINUTE('2024-11-21 11:00:59');
-- 输出0
SELECT SECOND('2024-11-21 11:00:59');
-- 输出59
SELECT WEEKDAY('2024-11-21 11:00:59');
-- 输出3
4.3.4 时间日期转换函数
这里先补充一个时间戳的概念,时间戳是指某个时间距离UTC(协调世界时)的1970-01-01 00:00:00 过去了多久(通常以秒或毫秒为单位)。
首先介绍DATE_FORMAT函数,是一个日期转字符串的函数,该函数接收两个参数x,y,x为一个时间参数,y表示一种转换格式,用于指定字符串的输出格式。
SELECT DATE_FORMAT('2024-11-21 11:00:59','%Y-%m-%d');
-- 输出'2024-11-21'
SELECT DATE_FORMAT('2024-11-21 11:00:59','%Y-%m-%d %H:%i');
-- 输出'2024-11-21 11:00'
SELECT DATE_FORMAT('2024-11-21 11:00:59','%Y年%m月%d日 %H时%i分%s秒');
-- 输出'2024年11月21日 11时00分59秒'
STR_TO_DATE函数是一种字符串转时间的函数,该函数接收两个参数x,y,x为一个时间的字符串表示,y表示一种转换格式,用于指定时间的输出格式,注意DATE_FORMAT函数接收的是一个时间类型的数据,输出的是一个能表示时间的字符串,而STR_TO_DATE函数接收的是一个能表示时间的字符串,输出的是一个时间类型的数据,注意如果y参数只能为datetime或者date类型的格式,否则会输出null值,如果'%Y-%m-%d %H:%i:%s'格式中时分秒缺失的话,会自动补0,而年月日缺失则会输出null值。
SELECT STR_TO_DATE('2024-11-21 11:00:59', '%Y-%m-%d %H:%i:%s');
-- 输出'2024-11-21 11:00:59'
SELECT STR_TO_DATE('2024-11-21 11:00:59', '%Y-%m-%d');
-- 输出'2024-11-21'
UNIX_TIMESTAMP函数的作用是将时间类型数据或一个能表示时间的字符串转为时间戳,以秒为单位输出。
FROM_UNIXTIME函数的作用是将以秒为单位的时间戳转指定格式的字符串输出。
select UNIX_TIMESTAMP('1970-01-01 09:00:00');
-- 输出3600
select FROM_UNIXTIME(0, '%Y-%m-%d %H:%i:%s');
-- 输出1970-01-01 08:00:00
注意,这里以东八区的时间为标准。
标签:11,输出,精通,入门,--,00,MySQL,SELECT,函数 From: https://blog.csdn.net/2401_86480334/article/details/143951081