注:以下范列中数据为举例假设,不是实时数据。
一、数字函数
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