https://dev.mysql.com/doc/refman/8.0/en/functions.html
12.1 Built-In Function and Operator Reference 内置函数和操作符参考
https://dev.mysql.com/doc/refman/8.0/en/built-in-function-reference.html
用的时候打开链接查找即可。
12.4.2 Comparison Functions and Operators 比较函数和运算符
COALESCE(value,…) coalesce
Returns the first non-NULL value in the list, or NULL if there are no non-NULL values.
mysql> SELECT COALESCE(NULL,1);
-> 1
mysql> SELECT COALESCE(NULL,NULL,NULL);
-> NULL
IFNULL(expr1,expr2)
If expr1 is not NULL, IFNULL() returns expr1;
otherwise it returns expr2.
mysql> SELECT IFNULL(1,0);
-> 1
mysql> SELECT IFNULL(NULL,10);
-> 10
mysql> SELECT IFNULL(1/0,10);
-> 10
mysql> SELECT IFNULL(1/0,'yes');
-> 'yes'
12.6.2 Mathematical Functions 数学函数
15. ROUND
ROUND(x) 函数返回最接近于参数 x 的整数; 简称 四舍五入 函数
ROUND(x,y) 函数对参数x进行四舍五入的操作,返回值保留小数点后面指定的y位。
SELECT ROUND(-6.6),ROUND(-8.44),ROUND(3.44);
从执行结果可以看出,ROUND(x)函数将值x四舍五入之后保留了整数部分。
SELECT ROUND(-6.66,1),ROUND(3.33,3),ROUND(88.66,-1),ROUND(88.46,-2);
从执行结果可以看出,
根据参数y值,将参数x四舍五入后得到保留小数点后y位的值,x值的小数位不够y位的补零;
如果y为负值,则保留小数点左边y位,先进行四舍五入操作,再将相应的位数值取零。
12.7 Date and Time Functions 日期和时间函数
https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_now
UNIX_TIMESTAMP([date])
mysql> SELECT UNIX_TIMESTAMP();
-> 1447431666
mysql> SELECT UNIX_TIMESTAMP('2015-11-13 10:20:19');
-> 1447431619
mysql> SELECT UNIX_TIMESTAMP('2015-11-13 10:20:19.012');
-> 1447431619.012
FROM_UNIXTIME(unix_timestamp[,format])
mysql> SELECT FROM_UNIXTIME(1447430881);
-> '2015-11-13 10:08:01'
mysql> SELECT FROM_UNIXTIME(1447430881) + 0;
-> 20151113100801
mysql> SELECT FROM_UNIXTIME(1447430881,
-> '%Y %D %M %h:%i:%s %x');
-> '2015 13th November 10:08:01 2015'
7. now() 日期
用法:
获取当前时间。
select now()
2021-11-30 16:38:32
9. str_to_date(string, format_mask) 转换
用法:
将字符串转变为日期。
SELECT STR_TO_DATE("August 10 2017", "%M %d %Y");
2017-08-10
10 .date_format(d,f) 日期
用法:
按表达式 f的要求显示日期 d
SELECT DATE_FORMAT('2011-11-11 11:11:11','%Y-%m-%d %r')
2011-11-11 11:11:11 AM
11.DATE_SUB(date,INTERVAL expr type) 日期
用法:
函数从日期减去指定的时间间隔。
select DATE_SUB(NOW(),INTERVAL 1 MONTH)
2021-11-01 16:15:48
select DATE_SUB(NOW(),INTERVAL 1 day)
2021-11-30 16:16:48
select DATE_SUB(NOW(),INTERVAL 1 WEEK)
2021-11-24 16:17:08
12.YEAR() 日期
用法:函数接受date参数,并返回日期的年份。
select YEAR(NOW())
2021
select YEAR('2018-01-01')
2018
select YEAR(null)
null
12.8 String Functions and Operators 字符串函数和运算符
https://dev.mysql.com/doc/refman/8.0/en/string-functions.html
ASCII(str)
返回字符串最左边字符的数值str
mysql> SELECT ASCII('2');
-> 50
mysql> SELECT ASCII(2);
-> 50
mysql> SELECT ASCII('dx');
-> 100
BIN(N)
返回二进制值的字符串表示形式N
mysql> SELECT BIN(12);
-> '1100'
BIT_LENGTH(str)
返回字符串的长度str以比特为单位
mysql> SELECT BIT_LENGTH('text');
-> 32
CHAR(N,… [USING charset_name])
CONCAT(str1,str2,…)
返回连接参数后得到的字符串。可能有一个或多个参数。如果所有参数都是非二进制字符串,则结果是非二进制字符串。如果参数包含任何二进制字符串,则结果是二进制字符串。数值参数被转换为等效的非二进制字符串形式。
CONCAT() returns NULL, if any argument is NULL.
mysql> SELECT CONCAT('My', 'S', 'QL');
-> 'MySQL'
mysql> SELECT CONCAT('My', NULL, 'QL');
-> NULL
mysql> SELECT CONCAT(14.3);
-> '14.3'
CONCAT_WS(separator,str1,str2,…)
CONCAT_WS()代表带分隔符的Concatenate,是CONCAT()的一种特殊形式。
第一个参数是其余参数的分隔符。分隔符添加在要连接的字符串之间。
分隔符可以是字符串,其余的参数也可以是字符串。
如果分隔符为空,则结果为空。
mysql> SELECT CONCAT_WS(',','First name','Second name','Last Name');
-> 'First name,Second name,Last Name'
mysql> SELECT CONCAT_WS(',','First name',NULL,'Last Name');
-> 'First name,Last Name'
SUBSTR
SUBSTR(str,pos)
SUBSTR(str FROM pos)
SUBSTR(str,pos,len)
SUBSTR(str FROM pos FOR len)
mysql> SELECT SUBSTRING('Quadratically',5);
-> 'ratically'
mysql> SELECT SUBSTRING('foobarbar' FROM 4);
-> 'barbar'
mysql> SELECT SUBSTRING('Quadratically',5,6);
-> 'ratica'
mysql> SELECT SUBSTRING('Sakila', -3);
-> 'ila'
mysql> SELECT SUBSTRING('Sakila', -5, 3);
-> 'aki'
mysql> SELECT SUBSTRING('Sakila' FROM -4 FOR 2);
-> 'ki'
SUBSTRING_INDEX(str,delim,count)
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
-> 'www.mysql'
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
-> 'mysql.com'
12.8.1 String Comparison Functions and Operators 字符串比较函数和运算符
https://dev.mysql.com/doc/refman/8.0/en/string-comparison-functions.html
12.8.2 Regular Expressions 正则表达式
https://dev.mysql.com/doc/refman/8.0/en/regexp.html
12.8.3 Character Set and Collation of Function Results 字符集和函数结果的排序
https://dev.mysql.com/doc/refman/8.0/en/string-functions-charset.html
12.20.1 Aggregate Function Descriptions 聚合函数描述
https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html
GROUP_CONCAT(expr)
12.21 Window Functions 窗口函数
RANK()
DENSE_RANK()
PERCENT_RANK()
ROW_NUMBER
窗口函数在 Mysql 8.0 引入,之前的版本不能使用 。
SELECT
count,
rank() over ( ORDER BY count DESC ) as 'rank' ,
DENSE_RANK() over ( ORDER BY count DESC ) 'dense_rank' ,
PERCENT_RANK() over ( ORDER BY count DESC ) as 'percent_rank' ,
ROW_NUMBER() over ( ORDER BY count DESC ) as 'row_number'
FROM
storage_tbl
row_number 行号
rank 排名 ,但是额外占用数字
dense_rank 排名,不额外占用数字
percent_rank