场景:使用MySQL函数
记录:NO.250
体验MySQL的函数,MySQL版本5.7.33,版本查询:SELECT VERSION()。
一、字符串类函数
LENGTH函数: 计算字符串长度,返回字符串的字节长度。
SELECT LENGTH('FuJian');
执行结果: 6
CONCAT函数: 合并字符串,返回结果为连接参数产生的字符串,参数可以是一个或多个
SELECT CONCAT('厦门','在','福建');
执行结果: 厦门在福建
INSERT函数: 替换字符串
SELECT INSERT('XiaMEN',4,3,'Men');
执行结果: XiaMen
LOWER函数: 将字符串中的字母转换为小写
SELECT LOWER('XIAMEN');
执行结果: xiamen
UPPER函数: 将字符串中的字母转换为大写
SELECT UPPER('xiaMen');
执行结果: XIAMEN
LEFT函数: 从左侧字截取符串,返回字符串左边的指定个数字符
SELECT LEFT('XiaMen In FuJian',6);
执行结果: XiaMen
RIGHT函数: 从右侧字截取符串,返回字符串左边的指定个数字符
SELECT RIGHT('XiaMen In FuJian',6);
执行结果: FuJian
TRIM函数: 删除字符串左右两侧的空格
SELECT TRIM(' 厦门在福建 ');
执行结果: 厦门在福建
REPLACE函数: 字符串替换函数,返回替换后的新字符串
SELECT REPLACE('厦门在福建','厦门','福州');
执行结果: 福州在福建
SUBSTR函数: 截取字符串,返回从指定位置开始的指定长度的字符串
SELECT SUBSTR('XiaMen,FuZhou',1,6);
执行结果: XiaMen
REVERSE函数: 字符串反转(逆序),返回与原始字符串顺序相反的字符串
SELECT REVERSE('ABCDEF');
执行结果: FEDCBA
二、日期时间类函数
CURDATE函数: 返回当前系统的日期值
SELECT CURDATE();
执行结果: 2021-06-23
CURRENT_DATE函数: 返回当前系统的日期值
SELECT CURRENT_DATE();
执行结果: 2021-06-23
DATE_FORMAT函数: 时间转换为指定格式
SELECT DATE_FORMAT(SYSDATE(),'%Y-%c-%d %H:%i:%s');
执行结果: 2021-6-23 22:45:19
CURTIME函数: 返回当前系统的时间值
SELECT CURTIME();
执行结果: 22:45:46
CURRENT_TIME函数: 返回当前系统的时间值
SELECT CURRENT_TIME();
执行结果: 22:46:12
NOW函数: 返回当前系统的日期和时间值
SELECT NOW();
执行结果: 2021-06-23 22:46:26
SYSDATE函数: 返回当前系统的日期和时间值
SELECT SYSDATE();
执行结果: 2021-06-23 22:46:49
函数: 获取UNIX时间戳,返回一个以UNIX时间戳为基础的无符号整数
SELECT UNIX_TIMESTAMP();
执行结果: 1624459631
FROM_UNIXTIME函数: 将UNIX时间戳转换为时间格式
SELECT FROM_UNIXTIME(1624459631);
执行结果: 2021-06-23 22:47:11
MONTH函数: 获取指定日期中的月份
SELECT MONTH('2021-6-23 23:17:33');
执行结果: 6
MONTHNAME函数: 获取指定日期中的月份英文名称
SELECT MONTHNAME('2021-6-23 23:17:33');
执行结果: June
DAYNAME函数: 获取指定日期对应的星期几的英文名称
SELECT DAYNAME('2021-6-23 23:17:33');
执行结果: Wednesday
DAYOFWEEK函数: 获取指定日期对应的一周的索引位置值
SELECT DAYOFWEEK('2021-6-23 23:17:33');
执行结果: 4
WEEK函数: 获取指定日期是一年中的第几周
SELECT WEEK('2021-6-23 23:17:33');
执行结果: 25
DAYOFYEAR函数: 获取指定日期是一年中的第几天
SELECT DAYOFYEAR('2021-6-23 23:17:33');
执行结果: 174
DAYOFMONTH函数: 获取指定日期是一个月中是第几天
SELECT DAYOFMONTH('2021-6-23 23:17:33');
执行结果: 23
YEAR函数: 获取年份
SELECT YEAR('2021-6-23 23:17:33');
执行结果: 2021
TIME_TO_SEC函数: 将时间参数转换为秒数
SELECT TIME_TO_SEC('2021-6-23 23:17:33');
执行结果: 83853
SEC_TO_TIME函数: 将秒数转换为时间
SELECT SEC_TO_TIME('83853');
执行结果: 23:17:33.000000
DATE_ADD函数: 日期添加指定的时间间隔
SELECT DATE_ADD(NOW(),INTERVAL 1 HOUR);
执行结果: 2021-06-24 00:22:17
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 MICROSECOND);
执行结果: 2021-06-23 23:17:33.000001
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 SECOND);
执行结果: 2021-06-23 23:17:34
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 MINUTE);
执行结果: 2021-06-23 23:18:33
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 HOUR);
执行结果: 2021-06-24 00:17:33
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 DAY);
执行结果: 2021-06-24 23:17:33
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 WEEK);
执行结果: 2021-06-30 23:17:33
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 MONTH);
执行结果: 2021-07-23 23:17:33
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 QUARTER);
执行结果: 2021-09-23 23:17:33
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 YEAR);
执行结果: 2022-06-23 23:17:33
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 SECOND_MICROSECOND);
执行结果: 2021-06-23 23:17:33.100000
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 MINUTE_MICROSECOND);
执行结果: 2021-06-23 23:17:33.100000
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 MINUTE_SECOND);
执行结果: 2021-06-23 23:17:34
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 HOUR_MICROSECOND);
执行结果: 2021-06-23 23:17:33.100000
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 HOUR_SECOND);
执行结果: 2021-06-23 23:17:34
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 HOUR_MINUTE);
执行结果: 2021-06-23 23:18:33
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 DAY_MICROSECOND);
执行结果: 2021-06-23 23:17:33.100000
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 DAY_SECOND);
执行结果: 2021-06-23 23:17:34
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 DAY_MINUTE);
执行结果: 2021-06-23 23:18:33
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 DAY_HOUR);
执行结果: 2021-06-24 00:17:33
SELECT DATE_ADD('2021-06-23 23:17:33',INTERVAL 1 YEAR_MONTH);
执行结果: 2021-07-23 23:17:33
ADDDATE函数: 日期添加指定的时间间隔
SELECT ADDDATE('2021-06-23 23:17:33',INTERVAL 1 SECOND);
执行结果: 2021-06-23 23:17:34
DATE_SUB函数: 日期减去指定的时间间隔
SELECT DATE_SUB('2021-06-23 23:17:33',INTERVAL 1 SECOND);
执行结果: 2021-06-23 23:17:32
SELECT DATE_SUB('2021-06-23 23:17:33',INTERVAL 1 MINUTE);
执行结果: 2021-06-23 23:16:33
SELECT DATE_SUB('2021-06-23 23:17:33',INTERVAL 1 HOUR);
执行结果: 2021-06-23 22:17:33
SELECT DATE_SUB('2021-06-23 23:17:33',INTERVAL 1 DAY);
执行结果: 2021-06-22 23:17:33
SELECT DATE_SUB('2021-06-23 23:17:33',INTERVAL 1 MONTH);
执行结果: 2021-05-23 23:17:33
SUBDATE函数: 日期减去指定的时间间隔
SELECT SUBDATE('2021-06-23 23:17:33',INTERVAL 1 SECOND);
执行结果: 2021-06-23 23:17:32
ADDTIME函数: 时间加法运算,在原始时间上添加指定的时间
SELECT ADDTIME('2021-06-23 22:17:33','01:03:05');
执行结果: 2021-06-23 23:20:38
SELECT ADDTIME('22:17:33','01:03:05');
执行结果: 23:20:38
SUBTIME函数: 时间减法运算,在原始时间上减去指定的时间
SELECT SUBTIME('2021-06-23 22:17:33','01:03:05');
执行结果: 2021-06-23 21:14:28
SELECT SUBTIME('22:17:33','01:03:05');
执行结果: 21:14:28
DATEDIFF函数: 获取两个日期之间间隔
SELECT DATEDIFF('2021-06-23','2021-05-23');
执行结果: 31
WEEKDAY函数: 获取指定日期在一周内的对应的工作日索引
SELECT WEEKDAY('2021-06-23');
三、数值计算类函数
ABS函数: 求绝对值
SELECT ABS(-1.567);
执行结果: 1.567
SQRT函数: 求二次方根
SELECT SQRT(9);
执行结果: 3
MOD函数: 求余数
SELECT MOD(9,5);
执行结果: 4
CEIL函数: 向上取整
SELECT CEIL(6.89);
执行结果: 7
CEILING函数: 向上取整
SELECT CEILING(6.89);
执行结果: 7
FLOOR函数: 向下取整
SELECT FLOOR(6.89);
执行结果: 6
RAND函数: 生成一个0~1之间的随机数
SELECT RAND();
执行结果: 0.7170911950218409
ROUND函数: 四舍五入
SELECT ROUND(6.89,1);
执行结果: 6.9
SIGN函数: 返回参数的符号
SELECT SIGN(6.89);
执行结果: 1
POW函数: 参数次方的结果值
SELECT POW(2,3);
执行结果: 8
POWER函数: 参数次方的结果值
SELECT POWER(2,3);
执行结果: 8
SIN函数: 求正弦值
SELECT SIN(30);
执行结果: -0.9880316240928618
ASIN函数: 求反正弦值
SELECT ASIN(0.689);
执行结果: 0.7601083816679577
COS函数: 求余弦值
SELECT COS(30);
执行结果: 0.15425144988758405
ACOS函数: 求反余弦值
SELECT ACOS(0.689);
执行结果: 0.810687945126939
TAN函数: 求正切值
SELECT TAN(0.689);
执行结果: 0.8236563114169484
ATAN函数: 求反正切值
SELECT ATAN(0.689);
执行结果: 0.6033052006543151
COT函数: 求余切值
SELECT COT(0.689);
执行结果: 1.214098630871516
四、聚合函数
MAX函数: 查询指定列的最大值
SELECT MAX(T.ID) FROM t_function T;
执行结果: 99999
MIN函数: 查询指定列的最小值
SELECT MIN(T.ID) FROM t_function T;
执行结果: 1
COUNT函数: 统计查询结果的行数
SELECT COUNT(1) FROM t_function T;
执行结果: 6
SUM函数: 返回指定列的总和
SELECT SUM(T.ID) FROM t_function T;
执行结果: 111106
AVG函数: 返回指定列数据的平均值
SELECT AVG(T.ID) FROM t_function T;
执行结果: 18517.6667
五、其它函数
IF函数:
SELECT IF(T.ID>99,T.ID,100) AS result FROM t_function T;
执行结果:
IFNULL函数:
SELECT IFNULL(T.ID,100) AS result FROM t_function T;
执行结果:
CASE WHEN句法使用:
SELECT
T.ID,
CASE
WHEN T.ID < 100
THEN '低端'
WHEN T.ID >= 100
AND T.ID < 9000
THEN '中端' WHEN T.ID >= 9000
THEN '高端'
ELSE '其它' END AS LL
FROM
t_function T;
执行结果:
六、附件
建表语句:
CREATE TABLE t_function (
ID BIGINT(18) NOT NULL COMMENT '标识',
INSERT_TIME DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '写入时间'
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='聚合函数-体验';
数据:
INSERT INTO t_function (ID) VALUES(1);
INSERT INTO t_function (ID) VALUES(9);
INSERT INTO t_function (ID) VALUES(99);
INSERT INTO t_function (ID) VALUES(999);
INSERT INTO t_function (ID) VALUES(9999);
INSERT INTO t_function (ID) VALUES(99999);
时间类型:
序号 | Type 值 |
1 | MICROSECOND |
2 | SECOND |
3 | MINUTE |
4 | HOUR |
5 | DAY |
6 | WEEK |
7 | MONTH |
8 | QUARTER |
9 | YEAR |
10 | SECOND_MICROSECOND |
11 | MINUTE_MICROSECOND |
12 | MINUTE_SECOND |
13 | HOUR_MICROSECOND |
14 | HOUR_SECOND |
15 | HOUR_MINUTE |
16 | DAY_MICROSECOND |
17 | DAY_SECOND |
18 | DAY_MINUTE |
19 | DAY_HOUR |
20 | YEAR_MONTH |
以上,感谢。