注:以下范列中数据为举例假设,不是实时数据。

一、数字函数

1、round(double a)
描述:返回 double 类型的整数值部分 (遵循四舍五入)

select round(3.1415926); --> 3
select round(3.5); --> 4

2、round(double a,int b)
描述:返回指定位数 b 的 double 类型

select round(3.1415926, 4); --> 3.1416

3、floor(double a)
描述:返回不大于 a 的最大整数,就是向下取整数函数

select round(3.1415926, 4); --> 3.1416 --> 3

4、ceil(double a)
描述:返回不小于 a 的最小整数,向上去整数

select round(3.1415926, 4); --> 3.1416 --> 4

5、rand(),rand(int seed)
描述:返回一个 0 到 1 范围内的随机数。如果指定种子 seed,则会得到一个稳定的随机数序列。

select rand(); --> 0.712311371683693

6、abs(int a ),abs(double a)
描述:返回数值 a 的绝对值

select abs(-1); --> 1

7、pmod(int a, int b),pmod(double a, double b)
描述:返回 a 除以 b 的余数

select pmod(9, 4); --> 1

8、negative(int a),negative(double a)
描述:返回 a 的相反数

select negative(3.14); --> -3.14

二、日期函数

1、fom_unixtime()
描述:将时间戳转换成时间格式

select from_unixtime(1888888888, 'yyyy-MM-dd');
2020-09-09

2、unix_timestamp()
描述:获取当前时间戳

select unix_timestamp();
1888888888

3、unix_timestamp(string date)
描述:转换格式为 “yyyy-MM-dd HH:mm:ss” 的日期到 UNIX 时间戳。如果转换失败,则返回 NULL。

select unix_timestamp('2020-09-09 09:09:09');
1888888888

4、unix_timestamp(string date, string pattern)
描述:转换 pattern 格式的日期到 UNIX 时间戳。如果转换失败,则返回 NULL。

select unix_timestamp('2020-09-09 09:09:09','yyyyMMdd HH:mm:ss');
1888888888

5、to_date(string date)
描述:返回日期时间字段中的日期部分

select unix_timestamp('2020-09-09 09:09:09');
2020-09-09

6、year(string date){类似用法的有:month,day,hour,minute,second}
描述:返回日期中的年份

select unix_timestamp('2020-09-09 09:09:09');
2020

7、weekofyear(string date)
描述:返回日期在该年的周数。

select weekofyear('2020-09-09 09:09:09');
09

8、datediff(string enddate, string startdate)
描述:返回结束日期减去开始日期的天数。

select datediff('2020-09-09', '2020-09-01');
8

9、date_add(string startdate, int days)
描述:返回开始日期 startdate 增加 days 天后的日期。

select datediff('2020-09-09', 10);
2020-09-19

10、date_sub(string startdate, int days)
描述:返回开始日期 startdate 减少 days 天后的日期。

select date_sub('2020-09-09', 1);
2020-09-08

字符串函数

1、length(string A)
描述:返回字符串 A 的长度

select length('abcedfg');
7

2、reverse(string A)
返回字符串 A 的反转结果

select reverse('abcedfg');
gfdecba

3、concat(string A, string B)
描述:返回输入字符串连接后的结果,支持任意多个输入字符串。

select concat('abc', 'def', 'gh');
abcedfg

4、concat_ws(string SEP, string A, string B)
描述:返回输入字符串连接后的结果,SEP 表示各个字符串间的分隔符。

select concat_ws(',', 'abc', 'def', 'gh');
abc,def,gh

5、substr(string A, int start)
描述:返回字符串 A 从 start 位置到结尾的字符串。

select substr('abcde', 3);
cde
select substring('abcde', -1);
e

6、substr(string A, int start, int len)
描述:返回字符串 A 从 start 位置开始,长度为 len 的字符串。

select substr('abcde', 3, 2);
cd
select substring('abcde', -2, 2);
de

7、upper(string A)
描述:返回字符串 A 的大写格式

select upper('Apple');
APPLE

8、lower(string A)
描述:返回字符串 A 的小写格式

select upper('APPLE');
apple

9、trim(string A)
描述:去除字符串两边的空格

select trim(' abc ');
abc

10、ltrim(string A)
描述:去除字符串左边的空格

select ltrim(' abc ');
'abc '

11、rtrim(string A)
描述:去除字符串右边的空格

select rtrim(' abc ');
' abc'

12、regexp_extract(string subject, string pattern, int index)
描述:将字符串 subject 按照 pattern 正则表达式的规则拆分,返回 index 部分指定的字符。

select regexp_extract('foothebar', 'foo(.*?)(bar)', 0);
foothebar
select regexp_extract('foothebar', 'foo(.*?)(bar)', 1);
the
select regexp_extract('foothebar', 'foo(.*?)(bar)', 2);
bar

13、get_json_object(string json_string, string path)
解析 json 的字符串 json_string,返回 path 指定的内容。如果输入的 json 字符串无效,那么返回 NULL。

select get_json_object('{"name":"zs","age":"25"}', '$.name');
zs

14、split(string str, string pat)
描述:按照 pat 字符串分割 str,会返回分割后的字符串数组。

select split('ab,cd,ef', ',');
["ab","cd","ef"]

15、find_in_set(string str, string strList)
描述:返回 str 在 strlist 第一次出现的位置,strlist 是用逗号分割的字符串。如果没有找到该 str 字符,则返回 0。

select find_in_set('cd','{ab,cd,ef}');
2

聚合函数

建一个测试表:分数列的60、80是重复出现的

+----------+-------------+
| test.id  | test.score  |
+----------+-------------+
| 1        | 60          |
| 2        | 30     	 |
| 3        | 80    		 |
| 4        | 40    		 |
| 5        | *60*      	 |
| 6        | 50          |
| 7        | *80*        |
| 8        | 70      	 |
| 9        | 90      	 |
| 10       | 100     	 |
+----------+-------------+

1、count(),count(DISTINCT,expr,a)
描述:count() 统计检索出的行的个数,包括 NULL 值的行;count(expr) 返回指定字段的非空值的个数;count(DISTINCT expr[, expr_.]) 返回指定字段的不同的非空值的个数。

select count(*) from test;
10
select count(distinct score) from test;
8

2、sum(col),sum(DISTINCT col)
描述:sum(col) 统计结果集中 col 的相加的结果;sum(DISTINCT col) 统计结果中 col 不同值相加的结果。

select sum(score) from test;
660
select sum(distinct score) from test;
520

3、avg(col),avg(DISTINCT col)
描述:avg(col) 统计结果集中 col 的平均值;avg(DISTINCT col) 统计结果中 col 不同值相加的平均值。

select avg(score) from test;
66.0
select avg(distinct score) from test;
65.0

4、min(col)
描述:统计结果集中 col 字段的最小值

select min(score) from test;
30

5、max(col)
描述:统计结果集中 col 字段的最大值

select max(score) from test;
100