136.MySQL8.0 Chapter 12 Functions and Operators

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

1

2

3

4

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'

1

2

3

4

5

6

7

8

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);

1

从执行结果可以看出,ROUND(x)函数将值x四舍五入之后保留了整数部分。

SELECT ROUND(-6.66,1),ROUND(3.33,3),ROUND(88.66,-1),ROUND(88.46,-2);

1

从执行结果可以看出,

根据参数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

1

2

3

4

5

6

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'

1

2

3

4

5

6

7

7. now() 日期

用法:

获取当前时间。

select now()

2021-11-30 16:38:32

1

2

9. str_to_date(string, format_mask) 转换

用法:

将字符串转变为日期。

SELECT STR_TO_DATE("August 10 2017", "%M %d %Y");

2017-08-10

1

2

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

1

2

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

1

2

3

4

5

6

12.YEAR() 日期

用法:函数接受date参数,并返回日期的年份。

select YEAR(NOW())

2021

select YEAR('2018-01-01')

2018

select YEAR(null)

null

1

2

3

4

5

6

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

1

2

3

4

5

6

BIN(N)

返回二进制值的字符串表示形式N

mysql> SELECT BIN(12);

-> '1100'

1

2

BIT_LENGTH(str)

返回字符串的长度str以比特为单位

mysql> SELECT BIT_LENGTH('text');

-> 32

1

2

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'

1

2

3

4

5

6

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'

1

2

3

4

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'

1

2

3

4

5

6

7

8

9

10

11

12

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'

1

2

3

4

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 官方 rank 函数

窗口函数在 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

1

2

3

4

5

6

7

8

row_number 行号

rank 排名 ,但是额外占用数字

dense_rank 排名,不额外占用数字

percent_rank

————————————————

版权声明:本文为CSDN博主「newProxyInstance」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_37151886/article/details/121613363