正文
一,引言
在查询数据的时候,往往需要我们对数据进行清洗和处理,而HSQL提供了很多函数方便我们使用,其实很多函数和普通的SQL是一样的,接下来我们对常用的函数进行分析。
二,类型转换函数
语法结构:
cast(源数据 as 目标数据类型)
-->注意数据类型必须可以进行相互转换,类似于java的强转
示例:
-->字符串转换成整型
hive> select cast('1' as int);
OK
1
三,数学运算函数
3.1 round()
功能:四舍五入
语法结构:
round(源数据,[保留小数的位数])
示例:
hive> select round(4.3);
OK
4.0
Time taken: 0.142 seconds, Fetched: 1 row(s)
hive> select round(4.5);
OK
5.0
Time taken: 0.09 seconds, Fetched: 1 row(s)
hive> select round(4.523, 2);
OK
4.52
3.2 ceil()
功能:向上取整
语法结构:
ceil(需要取整的数)
示例:
hive> select ceil(4.52);
OK
5
Time taken: 0.084 seconds, Fetched: 1 row(s)
hive> select ceil(4.2);
OK
5
Time taken: 0.094 seconds, Fetched: 1 row(s)
3.3 floor()
功能:向下取整
语法结构:
floor(需要处理的数据)
示例:
hive> select floor(3.2);
OK
3
Time taken: 0.092 seconds, Fetched: 1 row(s)
hive> select floor(3.5);
OK
3
3.4 abs()
功能:取绝对值
语法结构:
abs(需要取绝对值得数)
示例:
hive> select abs(3);
OK
3
Time taken: 0.093 seconds, Fetched: 1 row(s)
hive> select abs(-3);
OK
3
3.5 least()
功能:求提供数据的最小值
语法格式:
least(参数1,参数2,参数3,...)
示例:
hive> select least(1,2,3);
OK
1
和min的区别:min是求一组数据的最小值。一般是配合聚合函数使用。而least是单数据的中的一些数据最小值处理。
3.6 greatest
功能:求提供数据的最大值
语法格式:
greatest(参数1,参数2,参数3,...)
示例:
hive> select greatest(3,4,5);
OK
5
Time taken: 0.075 seconds, Fetched: 1 row(s)
hive>
和max的区别:max是求一组数据的最大值。一般是配合聚合函数使用。而greatest是单数据的中的一些数据最大值处理。
四,字符串函数
4.1 substr()
作用:字符串截取
语法格式:
substr(string, int start, [int len])
-->中括号的参数可写可不写,不写默认截取到末尾
示例:
hive> select substr('aaa', 1);
OK
aaa
Time taken: 0.098 seconds, Fetched: 1 row(s)
hive> select substr('aaa', 1, 2);
OK
aa
4.2 concat()和concat_ws()
功能:字符串拼接
语法格式:
-->单纯的将提供的参数进行拼接
concat(string A, stringB, ...)
-->字符串之间用一些字符进行拼接
concat_ws(连接字符,string A, string B, ...)
示例:
hive> select concat('aaa', 'bbb');
OK
aaabbb
Time taken: 0.142 seconds, Fetched: 1 row(s)
hive> select concat_ws('-', 'aaa', 'bbb');
OK
aaa-bbb
Time taken: 0.078 seconds, Fetched: 1 row(s)
4.3 length()
功能:求字符串长度
语法格式:
length(字符串)
示例:
hive> select length('abcd');
OK
4
Time taken: 0.09 seconds, Fetched: 1 row(s)
4.4 split()
功能:字符串切割
语法格式:
split(字符串, 分割符)
示例:
hive>select split('a:b:c', ':');
Total MapReduce CPU Time Spent: 2 seconds 960 msec
OK
["a","b","c"]
Time taken: 15.121 seconds, Fetched: 1 row(s)
注意:对于有些分割符,需要对其进行转义,因为要考虑到正则的问题,如下:
-->这里对·和\都进行了转义
hive> select split('192.168.174.2', '\\.');
Total MapReduce CPU Time Spent: 3 seconds 610 msec
OK
["192","168","174","2"]
Time taken: 13.974 seconds, Fetched: 1 row(s)
4.5 upper()和lower()
功能:字符串的大小写切换
语法结构:
upper(字符串)
lower(字符串)
示例:
hive> select lower('AA');
OK
aa
Time taken: 0.089 seconds, Fetched: 1 row(s)
hive> select upper('aa');
OK
AA
Time taken: 0.069 seconds, Fetched: 1 row(s)
五,时间函数
5.1 时间获取
直接获取当前时间:current_timestamp
hive> select current_timestamp;
OK
2019-05-22 11:22:54.179
Time taken: 0.071 seconds, Fetched: 1 row(s)
5.2 日期获取
直接获取当前日期:
hive> select current_date;
OK
2019-05-22
Time taken: 0.076 seconds, Fetched: 1 row(s)
5.3 时间戳获取
直接获取当前的时间戳:
hive> select unix_timestamp();
unix_timestamp(void) is deprecated. Use current_timestamp instead.
OK
1558495354
Time taken: 0.08 seconds, Fetched: 1 row(s)
5.4 时间转换
unix时间戳转字符串:
hive> select from_unixtime(unix_timestamp());
unix_timestamp(void) is deprecated. Use current_timestamp instead.
OK
2019-05-22 11:25:57
Time taken: 0.069 seconds, Fetched: 1 row(s)
字符串转时间戳:unix_tmiestamp()
语法格式:
unix_timestamp(时间字符串, [时间格式])
-->默认的世界格式是 yy-MM-dd HH:mm:ss
示例:
hive> select unix_timestamp("2017-08-10 17:50:30");
OK
1502358630
Time taken: 0.074 seconds, Fetched: 1 row(s)
hive> select unix_timestamp("2017/08/10 17:50:30","yyyy/MM/dd HH:mm:ss");
OK
1502358630
Time taken: 0.073 seconds, Fetched: 1 row(s)
将时间字符串转成日期:to_date
hive> select to_date("2017-09-17 16:58:32");
OK
2017-09-17
Time taken: 0.098 seconds, Fetched: 1 row(s)
来源:oschina
链接:https://my.oschina.net/u/4266531/blog/3529150