MySQL函数汇总

1、数值型函数

ABS

求绝对值

求5、-2.4、-24 和 0 的绝对值

-- 绝对值
SELECT ABS(5), ABS(-2.4), ABS(-24), ABS(0);

在这里插入图片描述

SQRT

SQRT求二次方根, 平方根函数 SQRT(x) 返回非负数 x 的二次方根。负数没有平方根,返回结果为 NULL

求 25、120 和 -9 的二次平方根

SELECT SQRT(25), SQRT(120), SQRT(-9);

在这里插入图片描述

MOD

MOD求余数,MOD(x,y) 返回 x 被 y 除后的余数

对 MOD(63,8)、MOD(120,10)、MOD(15.5,3) 进行求余运算

SELECT MOD(63,8),MOD(120,10),MOD(15.5,3);

在这里插入图片描述

CEILING || CEIL

CEIL 和 CEILING两个函数功能相同,都是返回不小于参数的最小整数,即向上取整

使用 CEILING 函数返回最小整数

-- 向上取整
SELECT CEIL(-2.5),CEILING(2.5);

在这里插入图片描述

FLOOR

FLOOR向下取整,返回值转化为一个BIGINT

求 小于 5,5.66,-4,-4.66 的最大整数

-- 向下取整
SELECT FLOOR(5),FLOOR(5.66),FLOOR(-4),FLOOR(-4.66);

在这里插入图片描述

RAND

RAND生成一个0~1之间的随机数,传入整数参数是,用来产生重复序列。

随机数

-- 随机数
SELECT RAND(), RAND(99), RAND(99), RAND();

在这里插入图片描述

ROUND

给个定数参数时,rand(99)两个值会重复。

ROUNDROUND(x)对所传参数进行四舍五入。
ROUND(x,y) 函数对参数x进行四舍五入的操作,返回值保留小数点后面指定的y位
SELECT ROUND(2.5), ROUND(3.1), ROUND(3.6), ROUND(-3.6888, 2);

在这里插入图片描述

SIGN

SIGN返回参数的符号。
x 的值为负、零和正时返回结果依次为 -1、0 和 1

使用 SIGN 函数返回参数的符号

-- 返回符号
 SELECT SIGN(-6),SIGN(0),SIGN(34);

在这里插入图片描述

POW

POW 和 POWER两个函数的功能相同,都是所传参数的次方的结果值

使用 POW(x,y) 和 POWER(x,y) 函数对参数 x 进行 y 次方的求值

-- 平方
SELECT POW(3, 3), POWER(8, 2);

在这里插入图片描述

SIN

SIN求正弦值

使用 SIN 函数计算正弦值

-- 正弦
SELECT SIN(1),SIN(0.5*PI());

在这里插入图片描述

ASIN

[ASIN](求反正弦值,与函数 SIN 互为反函数。
若 x 不在 -1 到 1 的范围之内,则返回 NULL

ASIN 函数计算反正弦值

-- 反正弦
SELECT ASIN(0.8414709848078965),ASIN(2);

在这里插入图片描述

COS

COS求余弦值
-- 余弦
SELECT COS(1),COS(0),COS(PI());

在这里插入图片描述

ACOS

ACOS求反余弦值,与函数 COS 互为反函数
x 值的范围必须在 -1 和 1 之间,否则返回 NULL
SELECT ACOS(2),ACOS(1),ACOS(-1);

在这里插入图片描述

TAN

TAN求正切值
-- 正切
SELECT TAN(1),TAN(0);

在这里插入图片描述

2、字符串函数

LENGTH

计算字符串长度函数,返回字符串的字节长度。
使用 uft8(UNICODE 的一种变长字符编码,又称万国码)编码字符集时,一个汉字是 3 个字节,一个数字或字母是一个字节

-- 长度
SELECT LENGTH('name'), LENGTH(9090), LENGTH('数据库');

在这里插入图片描述

CONCAT

合并字符串函数,返回结果为连接参数产生的字符串,参数可以使一个或多个。
若有任何一个参数为 NULL,则返回值为 NULL

-- 字符串拼接
SELECT CONCAT('MySQL','5.7'),CONCAT('MySQL',NULL);

在这里插入图片描述

INSERT

替换字符串函数

-- 替换字符串
SELECT INSERT('football', 2, 2, '888'), INSERT('football', 8, 2, '888'),  INSERT('football', 2, 18, '888');

在这里插入图片描述

LOWER || UPPER

LOWER 将字符串中的字母转换为小写
UPPER 将字符串中的字母转换为大写

-- 大小写
SELECT LOWER('BLUE'), UPPER('blue');

在这里插入图片描述

LEFT || RIGTH

LEFT 从左侧字截取符串,返回字符串左边的若干个字符
LEFT(s,n) 函数返回字符串 s 最左边的 n 个字符

RIGHT 从右侧字截取符串,返回字符串右边的若干个字符
RIGHT(s,n) 函数返回字符串 s 最右边的 n 个字符

-- 字段截取
SELECT LEFT('MySQL', 3), RIGHT('MySQL',3);

在这里插入图片描述

TRIM

TRIM 删除字符串左右两侧的空格

-- 去除两边空格
SELECT TRIM(' mobile  ');

在这里插入图片描述

REPLACE

REPLACE
字符串替换函数,返回替换后的新字符串。
REPLACE(s,s1,s2) 使用字符串 s2 替换字符串 s 中所有的字符串 s1

-- 字符串替换
SELECT REPLACE('aaa.bb.com', 'b', '99');

在这里插入图片描述

SUBSTRING

SUBSTRING
截取字符串,返回从指定位置开始的指定长度的字符换

-- 截取
SELECT SUBSTRING('computer', 2, 4), SUBSTRING('computer', -5);

在这里插入图片描述

REVERSE

REVERSE
字符串反转(逆序)函数,返回与原始字符串顺序相反的字符串

-- 反转
SELECT REVERSE('hello');

在这里插入图片描述

3、 日期和时间函数

CURDATE || CURTIME || NOW

CURDATE 和 CURRENT_DATE 两个函数作用相同,返回当前系统的日期值
CURTIME 和 CURRENT_TIME 两个函数作用相同,返回当前系统的时间值
NOW 和 SYSDATE 两个函数作用相同,返回当前系统的日期和时间值

SELECT 
	CURDATE(), 
	CURRENT_DATE(), 
	CURRENT_DATE()+0, 
	CURTIME(), 
	CURRENT_TIME(), 
	CURRENT_TIME()+0;

在这里插入图片描述

SELECT NOW(), SYSDATE();

在这里插入图片描述

SYSDATE 的 不同之处
MySQL 中 NOW() 和 SYSDATE() 都表示当前时间,但是 NOW() 取的是语句开始执行的时间,而 SYSDATE() 取的是语句执行过程中动态的实时时间

-- sleep(3) 延迟3s
SELECT NOW(), SYSDATE(), SLEEP(3), NOW(), SYSDATE();

在这里插入图片描述

运行结果可以看出,NOW() 函数始终获取的是 SQL 语句开始执行的时间,而 SYSDATE() 函数则是动态获取的实时时间

UNIX_TIMESTAMP || FROM_UNIXTIME

UNIX_TIMESTAMP 获取UNIX时间戳函数,返回一个以 UNIX 时间戳为基础的无符号整数
FROM_UNIXTIME 将 UNIX 时间戳转换为时间格式,与UNIX_TIMESTAMP互为反函数

SELECT UNIX_TIMESTAMP(), UNIX_TIMESTAMP(NOW());

在这里插入图片描述

SELECT FROM_UNIXTIME(1652580661)

在这里插入图片描述

MONTH

MONTH 获取指定日期中的月份
MONTHNAME 获取指定日期中的月份英文名称

SELECT MONTH(NOW()), MONTHNAME(NOW());

在这里插入图片描述

DAYNAME || DAYOFWEEK || WEEK || DAYOFMONTH || DAYOFYEAR

SELECT 
	DAYNAME(NOW()), 
	DAYOFWEEK(NOW()), 
	WEEK(NOW()), 
	DAYOFYEAR(NOW()), 
	DAYOFMONTH(NOW())

在这里插入图片描述

YEAR || TIME_TO_SEC || SEC_TO_TIME

YEAR 获取年份,返回值范围是 1970〜2069
TIME_TO_SEC 将时间参数转换为秒数
SEC_TO_TIME 将秒数转换为时间,与TIME_TO_SEC 互为反函数

SELECT YEAR(NOW()), TIME_TO_SEC(NOW()), SEC_TO_TIME(TIME_TO_SEC(NOW()));

在这里插入图片描述

DATE_SUB || DATE_ADD

DATE_ADD 和 ADDDATE 两个函数功能相同,都是向日期添加指定的时间间隔
DATE_SUB 和 SUBDATE 两个函数功能相同,都是向日期减去指定的时间间隔

SELECT
	DATE_SUB(NOW(),INTERVAL 1 DAY) as pre_day1,
	SUBDATE(NOW(),INTERVAL 1 DAY) as pre_day2,
	DATE_SUB(NOW(), INTERVAL 1 MONTH) as pre_month,
	DATE_ADD(NOW(),INTERVAL 1 DAY) as next_day1,
	ADDDATE(NOW(),INTERVAL 1 DAY) as next_day2,
	DATE_ADD(NOW(), INTERVAL 1 MONTH) as next_month

在这里插入图片描述

ADDTIME || SUBTIME

ADDTIME 时间加法运算,在原始时间上添加指定的时间
SUBTIME 时间减法运算,在原始时间上减去指定的时间

SELECT ADDTIME(NOW(), '12:00:00'), SUBTIME(NOW(), '12:00:00');

在这里插入图片描述

DATEDIFF

DATEDIFF
获取两个日期之间间隔,返回参数 1 减去参数 2 的值

SELECT DATEDIFF(NOW(), '2021-05-15')

在这里插入图片描述

DATE_FORMAT

DATE_FORMAT
格式化指定的日期,根据参数返回指定格式的值

DATE_FORMAT(date,format) 函数是根据 format 指定的格式显示 date 值。

DATE_FORMAT() 函数接受两个参数:
date:是要格式化的有效日期值
format:是由预定义的说明符组成的格式字符串,每个说明符前面都有一个百分比字符(%)。

说明符	说明
%a		工作日的缩写名称(Sun~Sat)
%b		月份的缩写名称(Jan…Dec)
%c		月份,数字形式(0~12)
%D		带有英语后缀的该月日期(0th, 2st, 3nd,…)
%d		该月日期,数字形式(00~31)
%e		该月日期,数字形式((0~31)
%f		微秒(000000 …999999)
%H		以 2 位数表示 24 小时(00~23)
%h, %I	以 2 位数表示 12 小时(01~12)
%i		分钟,数字形式(00~59)
%j		—年中的天数(001~366)
%k		以 24 小时(0~23)表示
%l		以12小时(1~12)表示
%M		月份名称(January~December)
%m		月份,数字形式(00~12)
%p		上午(AM) 或下午(PM)
%r		时间,12小时制(小时 (hh): 分钟 (mm) : 秒数 (ss) 后加 AM 或 PM)
%S, %s	以 2 位数形式表示秒(00~59)
%T		时间,24 小时制(小时 (hh): 分钟 (mm): 秒数 (ss))
%U		周(00~53),其中周日为每周的第一天
%u		周(00~53),其中周一为每周的第一天
%V		周(01~53),其中周日为每周的第一天,和%X同时使用
%v		周(01~53),其中周一为每周的第一天,和%x同时使用
%W		星期标识(周日、周一、周二…周六)
%w		—周中的每日(0= 周日…6= 周六)
%X		该周的年份,其中周日为每周的第一天,数字形式,4 位数,和%V同时使用
%x		该周的年份,其中周一为每周的第一天,数字形式,4位数,和%v同时使用
%Y		4 位数形式表示年份
%y		2 位数形式表示年份
%%		%一个文字字符
SELECT 
	DATE_FORMAT(NOW(), '%T') t1,
	DATE_FORMAT(NOW(), '%Y') t2,
	DATE_FORMAT(NOW(), '%y') t3,
	DATE_FORMAT(NOW(), '%M') t4,
	DATE_FORMAT(NOW(), '%m') t5,
	DATE_FORMAT(NOW(), '%D') t6,
	DATE_FORMAT(NOW(), '%d') t7,
	DATE_FORMAT(NOW(), '%H') t8,
	DATE_FORMAT(NOW(), '%h') t9,
	DATE_FORMAT(NOW(), '%I') t10,
	DATE_FORMAT(NOW(), '%i') t11,
	DATE_FORMAT(NOW(), '%S') t12,
	DATE_FORMAT(NOW(), '%s') t13,
	DATE_FORMAT(NOW(), '%Y-%m-%d %T') now

在这里插入图片描述

4、聚合函数

MAX 查询指定列的最大值
MIN 查询指定列的最小值
COUNT 统计查询结果的行数
SUM 求和,返回指定列的总和
AVG 求平均值,返回指定列数据的平均值

SELECT 
	MAX(YEAR(birth)), 
	MIN(YEAR(birth)), 
	COUNT(*), 
	SUM(YEAR(birth)), 
	AVG(YEAR(birth)) 
FROM pet;

在这里插入图片描述

5、流程控制函数

IF 判断,流程控制
IFNULL 判断是否为空
CASE 搜索语句

SELECT 
	NAME, 
	birth, 
	IF(YEAR(birth) < 2000, '小于2000', '大于2000') 
FROM pet;

在这里插入图片描述

IFNULL 函数是 MySQL 控制流函数之一,它接受两个参数,如果不是 NULL,则返回第一个参数。 否则,IFNULL 函数返回第二个参数。两个参数可以是文字值或表达式

SELECT 	
 IFNULL(5,8),
 IFNULL(NULL,'OK'),
 IFNULL(SQRT(-8),'FALSE'),
 SQRT(-8)

在这里插入图片描述

简单的 CASE 语句的语法:

CASE  <表达式>
   WHEN <值1> THEN <操作>
   WHEN <值2> THEN <操作>
   ...
   ELSE <操作>
END CASE;
SELECT
    CASE
        WEEKDAY(NOW())
        WHEN 0
        THEN '星期1'
        WHEN 1
        THEN '星期2'
        WHEN 2
        THEN '星期3'
        WHEN 3
        THEN '星期4'
        WHEN 4
        THEN '星期5'
        WHEN 5
        THEN '星期6'
        WHEN 6
        THEN '星期日'
        END AS WEEK, WEEKDAY(NOW()), NOW(), DAYNAME(NOW());

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值