Hive常用内置函数
常用函数列表
函数 | 用法 |
---|---|
round(double a) | 近似函数,返回double类型的整数值部分(遵循四舍五入) |
round(double a,int b) | 指定进度近似函数,返回长整型最近的double值 |
floor(double a) | 向下取整,返回最大的长整型等于或小于double值 |
ceil(double a) | 向上取整,返回最小bigint值等于或大于double |
ceiling(double a) | 向上取整,返回不小于a的最小整数 |
rand(),rand(int seed) | 返回一个随机数,从行改变到行 |
size(map<K,V>) | 返回在映射类型的元素的数量 |
size(array) | 返回数组流泪记性元素的数量 |
cast(expr as type) | 返回表达式expr转换为type的结果,如果转换不成功就会返回null |
日期函数列表
函数 | 用法 |
---|---|
from_unixtime(bigint unixtime[,string format]) | unix时间戳转日期函数,转换的秒数是从1970-01-01 00:00:00 UTC代表的那一刻开始,在当前系统时区的时间戳字符串格式:'1970-01-01 00:00:00',例如,select from_unixtime(15900000000,'yyyy-MM-dd') |
unix_timestamp() | 获取当前时区的unix时间戳 |
unix_timestamp(string date) | 日期转换unix时间戳函数,转换格式为'yyyy-MM-dd HH:mm:ss'的日期到unix时间戳,若转换失败,则返回null |
unix_timestamp(string date,string pattern):转换pattern格式的日期到unix时间戳,例如:select unix_timestamp('20200520 02:40:00','yyyyMMdd HH:mm:ss') | |
to_date(string timestamp) | 日期时间转日期函数,返回一个字符串时间戳的日期部分 |
year(string date) | 日期转年函数,返回日期或时间戳字符串的年份部分 |
month(string date) | 日期转月函数,返回日期或时间戳字符串的月份部分 |
day(string date) | 日期转天函数,返回日期或时间戳字符串的天 |
hour(string date) | 日期转小时函数,返回日期中的小时,int类型 |
minute(string date) | 日期转分钟函数,返回日期中的分钟,int类型 |
second(string date) | 返回日期中的秒,int类型 |
weekofyear(string date) | 日期转周函数,返回日期在该年的周数,int类型 |
date_diff(string enddate,string startdate) | 日期比较函数,返回结束日期减去开始日期的天数,int类型 |
date_add(string startdate,int days) | 返回开始日期startdate增加days天后的日期 |
date_sub(string startdate,int days) | 返回开始日期减少days天后的日期 |
字符串函数列表
函数 | 用法 |
---|---|
length(string a) | 返回字符串啊的长度 |
reverse(string a) | 返回字符串a反转后的结果 |
concat(string a,string b,...) | 返回a串联b产生的字符串,支持任意多个字符串 |
concat_ws(string sep,string a,string b,...) | 返回a,b在sep连接之后的字符串,sep为各个字符串间的分隔符 |
substr(string a,int start) | 字符串截取函数,返回从a的开始位置到结尾的子字符串 |
substr(string a,int start,int length) | 字符串截取函数,返回a字符串从strart位置开始长度为length的子字符串 |
upper(string a) | 返回a字符串中的所有字符的大写字符串 |
ucase(string a) | 返回a字符串中的所有字符的大写字符串 |
lower(string a) | 返回a字符串中所有字符的小写字符串 |
lcase(string a) | 返回a字符串中所有字符的小写字符串 |
trim(string a) | 返回去掉a字符串中所有的空格的字符串 |
ltrim(string a) | 返回去掉字符串a左侧的所有空格的字符串 |
rtrim(string a) | 返回去掉字符串右侧的所有空格的字符串 |
regexp_replace(string a,string b,string c) | 返回c替换字符串a中所有b子字符串的结果 |
space(int n) | 返回长度为n的空字符串 |
repeat(string str,int n) | 重复字符串函数,返回重复n次后的str字符串 |
asccii(string str) | 首字符asccii函数,返回字符串str第一个字符的asccii码 |
Ipad(string str,int len,string pad) | 左补足函数,将str用pad进行左补足到len位 |
rpad(string str,int len,string pad) | 右补足函数,将str用pad进行右补足到len位 |
split(string str,string pat) | 按照pat字符串分割str,会返回分割后的字符串数组 |
find_in_set(string str,string strList) | 返回str在strlist第一次出现的位置,strlist是用逗号分割的字符串集合,没有找到就返回0 |
聚合函数列表
函数 | 用法 |
---|---|
count(*),count(expr) , | 返回检索的行的个数 |
sum(col),sum(distinct col) | 返回该列或该列的不同元素的总和 |
avg(col),avg(distinct col) | 返回列或该列不同元素的平均值 |
min(col) | 返回该列中的最小值 |
max(col) | 返回该列中的最大值 |
条件判断函数列表
函数 | 用法 |
---|---|
if(testcondition,T value,F value) | 判断条件只有两种结果时,可以使用if,如果为ture就返回T值,如果为False就返回F值 |
coalesce(T v1,T v2,...) | 非空查找函数,返回参数中第1个非空值,如果所有值都为null,那么返回null |
case condition when a then b when c then d else e end | 多条件判断 |