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  
14 代表位置,下标从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函数汇总的主要内容,如果未能解决你的问题,请参考以下文章

Mysql中常用的函数汇总

SVM知识点汇总

数学建模线性代数知识汇总,参加建模大赛的小伙伴看过来,它会是你的最优选

sqll server中表的数据类型没有设置长度,那是默认长度还是啥? 比如float

27 数值的整数次方

方法与函数汇总