MySQL函数汇总
Posted Z-hhhhh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL函数汇总相关的知识,希望对你有一定的参考价值。
mysql函数整理
一、数学函数
ABS(x)
返回x的绝对值
select abs(-123);
123
BIN(x)
返回x的二进制(OCT返回八进制,HEX返回十六进制)
select bin(3) ;
11
CEILING(x) 、CEIL(x)
返回大于x的最小整数值,两个函数作用相同
select ceiling(3.14),ceil(3.14);
4,4
EXP(x)
返回值e(自然对数的底)的x次方
select exp(2);
7.38905609893065
FLOOR(x)
返回小于x的最大整数值
select floor(3.14);
3
GREATEST(x1,x2,…,xn)
返回集合中最大的值
select greatest(2,5,10,1,0);
10
LEAST(x1,x2,…,xn)
返回集合中最小的值
select least(2,5,10,1,0);
0
LN(x)
返回x的自然对数
select ln(4);
1.3862943611198906
LOG(x,y)
返回x为底的对数
select log(10,100);
2
MOD(x,y)
返回x/y的模(余数)
select mod(5,3);
2
PI()
返回pi的值(圆周率)
select pi();
3.141593
RAND()
返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。
mysql> select rand() rst1,rand(1) rst2,rand(1) rst2;
+---------------------+---------------------+---------------------+
| rst1 | rst2 | rst2 |
+---------------------+---------------------+---------------------+
| 0.32976142254635826 | 0.40540353712197724 | 0.40540353712197724 |
+---------------------+---------------------+---------------------+
//使用种子,每次会获取固定的一个数
ROUND(x,y)
返回参数x的四舍五入的有y位小数的值
select round(3.1415,3);
3.142
SIGN(x)
返回代表数字x的符号的值
select sign(3.14) ,sign(-3.14);
1 -1
SQRT(x)
返回一个数的平方根
select sqrt(4);
2
TRUNCATE(x,y)
返回数字x截短为y位小数的结果
select truncate(3.1415,2) ;
3.14
pow(x,y)
幂运算
select pow(2,3);
8
//2的3次方
二、聚合函数(常用于GROUP BY从句的SELECT查询中)
AVG(col)
返回指定列的平均值
COUNT(col)
返回指定列中非NULL值的个数
MIN(col)
返回指定列的最小值
MAX(col)
返回指定列的最大值
SUM(col)
返回指定列的所有值之和
GROUP_CONCAT(col)
返回由属于一组的列值连接组合而成的结果
三、字符串函数
ASCII(char)
返回字符的ASCII码值
select ascii('a');
97
BIT_LENGTH(str)
返回字符串的比特长度
select bit_length('a');
8
CONCAT(s1,s2…,sn)
将s1,s2…,sn连接成字符串,如果任何参数是NULL,返回NULL
select concat('中','♥','国');
中♥国
CONCAT_WS(sep,s1,s2…,sn)
将s1,s2…,sn连接成字符串,并用sep字符间隔
select concat_ws('♥','zwh','cm');
zwh♥cm
INSERT(str,x,y,instr)
将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果
select insert('FootBall',1,4,'Basket')
BasketBall
1,4 代表位置,下标从1开始
FIND_IN_SET(str,list)
分析逗号分隔的list列表,如果发现str,返回str在list中的位置
select find_in_set('zwh',concat_ws(',','cm','♥','zwh'));
3
LCASE(str)、LOWER(str)
返回将字符串str中所有字符改变为小写后的结果
select lower('AVDAadfa');
avdaadfa
LEFT(str,x)
返回字符串str中最左边的x个字符
select left('abcdef',5);
abcde
5代表数量
LENGTH(s)
返回字符串str中的字符数
select length('abc');
返回字节的个数
注意:utf8mb4 是3字节汉字
LOCATE(substr,str)
返回子串substr在字符串str中第一次出现的位置
select locate('d','abcded'),locate('z','abcded');
4 0
-- 只计算第一次出现的位置,如果没有出现,就返回0
LTRIM(str)
从字符串str中切掉开头的空格
select trim(' abc ed ');
abc ed
-- 中间和后面的空格不会被去掉
MID(str,x1,x2)
从str的x1的位置,截取x2个字符
select mid('abcdef',2,3);
bcd
2代表位置,3代表数量
REVERSE(str)
返回颠倒字符串str的结果
select reverse('abc');
cba
RIGHT(str,x)
返回字符串str中最右边的x个字符
select right('abcdef',2);
ef
2代表数量
REPLACE(str1,str2,str3)
把str1中满足str2条件的,替换成str3
select replace ('123abc123','123','ABC');
ABCabcABC
RTRIM(str)
返回字符串str尾部的空格
select rtrim(' abc ed ');
abc ed
-- 前面和中间的空格不会影响
STRCMP(s1,s2)
比较字符串s1和s2
select strcmp('zwh','cm');
TRIM(str)
去除字符串首部和尾部的所有空格
select trim(' abc ed ');
abc ed
-- 中间的空格不会被去掉
UCASE(str)、UPPER(str)
返回将字符串str中所有字符转变为大写后的结果
select upper('AVDAadfa');
AVDAADFA
四、日期和时间函数
CURDATE()、CURRENT_DATE()
返回当前的日期
select curdate(), current_date();
2021-08-08 2021-08-08
CURTIME()、CURRENT_TIME()
返回当前的时间
select curtime(),current_time();
10:55:26 10:55:26
DATE_ADD(date,INTERVAL int keyword)
返回日期date加上间隔时间int的结果(int必须按照关键字进行格式化)
select current_date(),date_add(current_date,interval 1 day),date_add(current_date,interval -1 day),date_add(current_date,interval 1 month);
2021-08-08 2021-08-09 2021-08-07 2021-09-08
-- int 的正负可以调整是加还是减,单位可以是year,mongth ,day
DATE_FORMAT(date,fmt)
依照指定的fmt格式格式化日期date值
select date_format(current_date(),'%m-%d-%Y %T');
08-08-2021 11:09:06
-- 常用的情况:Y表示年,m表示月,d表示天,T表示时分秒,
DATE_SUB(date,INTERVAL int keyword)
返回日期date加上间隔时间int的结果(int必须按照关键字进行格式化),如:SELE 33CTDATE_SUB(CURRENT_DATE,INTERVAL 6 MONTH);
select current_date,date_sub(current_date, interval 2 day);
2021-08-08 2021-08-06
-- int 的正负可以调整是加还是减,单位可以是year,mongth ,day
DAYOFWEEK(date)
返回date所代表的一星期中的第几天(1~7)
select dayofweek(current_date);
1
--周日为每周的第一天,
DAYOFMONTH(date)
返回date是一个月的第几天(1~31)
select dayofmonth(now());
8
DAYOFYEAR(date)
返回date是一年的第几天(1~366)
select dayofyear(now());
DAYNAME(date)
返回date的星期名,如:SELECT DAYNAME(CURRENT_DATE);
select dayname(now());
Sunday
FROM_UNIXTIME(ts,fmt)
根据指定的fmt格式,格式化UNIX时间戳ts
select from_unixtime(123456789,'%Y-%m-%d %T');
1973-11-30 05:33:09
HOUR(time)
返回time的小时值(0~23)
select hour('1973-11-30 05:33:09');
5
MINUTE(time)
返回time的分钟值(0~59)
select minute('1973-11-30 05:33:09');
33
MONTH(date)
返回date的月份值(1~12)
select month('1973-11-30 05:33:09');
11
MONTHNAME(date)
返回date的月份名,如:SELECT MONTHNAME(CURRENT_DATE);
select monthname('1973-11-30 05:33:09');
November
NOW()
返回当前的日期和时间
select now();
2021-08-08 13:27:56
QUARTER(date)
返回date在一年中的季度(1~4),如SELECT QUARTER(CURRENT_DATE);
select quarter('1973-11-30 05:33:09');
4
unix_timestamp(date)
WEEK(date)
返回日期date为一年中第几周(0~53)
select week('1973-11-30 05:33:09');
47
YEAR(date)
返回日期date的年份(1000~9999)
select year('1973-11-30 05:33:09');
1973
五、加密函数
AES_ENCRYPT(str,key)
返回用密钥key对字符串str利用高级加密标准算法加密后的结果,调用AES_ENCRYPT的结果是一个二进制字符串,以BLOB类型存储
AES_DECRYPT(str,key)
返回用密钥key对字符串str利用高级加密标准算法解密后的结果
DECODE(str,key)
使用key作为密钥解密加密字符串str
ENCRYPT(str,salt)
使用UNIXcrypt()函数,用关键词salt(一个可以惟一确定口令的字符串,就像钥匙一样)加密字符串str
ENCODE(str,key)
使用key作为密钥加密字符串str,调用ENCODE()的结果是一个二进制字符串,它以BLOB类型存储
MD5()
计算字符串str的MD5校验和
PASSWORD(str)
返回字符串str的加密版本,这个加密过程是不可逆转的,和UNIX密码加密过程使用不同的算法。
SHA()
计算字符串str的安全散列算法(SHA)校验和
以上是关于MySQL函数汇总的主要内容,如果未能解决你的问题,请参考以下文章
数学建模线性代数知识汇总,参加建模大赛的小伙伴看过来,它会是你的最优选