MySQL Chapter 12 Functions and Operators 函数和运算符

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 官方 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	

在这里插入图片描述

row_number 行号
rank 排名 ,但是额外占用数字
dense_rank 排名,不额外占用数字
percent_rank

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值