常用函数:
- 转码:
select encode('你好','utf8');
select decode(encode('你好','utf16'),'utf16');
- 分别展示字符串:
select explode(array('abc','def','gh'));//输出结果为abc def ghselect
select explode(jands) from employee;
- 根据第一个字符链接起来:
select concat_ws(str string,a string,b string,...)
select concat_ws('-','a','b','c');//输出a-b-c
- 返回第n个参数,若n<1或n>参数的个数则返回null
select elt(N int,str1 string,str2 string,...)
select elt(4,'a','b','c','d');//输出d
- 返回结果,若值为null或未找到则返回0
select field(val T,val1 T,val2 T,...)
select field(10,1,3,4,5,6,10,12);//输出结果为6
- 返回str在strList中的位置
select find_in_set(str string,strList string)
select find_in_set('and','Melon,and,fruit,fields');//输出结果为2
select find_in_set('And','Melon,and,fruit,fields');//输出结果为0
select find_in_set('and,','Melon,and,fruit,fields');//输出结果为0
select find_in_set(NULL,'Melon,and,fruit,fields');//输出结果为null
- 格式化数字x为包含d位小数,四舍五入
select format_number(number x,int d)
select format_number(1234.14,1);//输出结果1234.1
select format_number(1234.16,1);//输出结果1234.2
- 返回字符串长度
select length(string A)
- 反转字符串
select reverse(string A)
select reverse('abcd');//输出dcba
- 左右填充和左右去空格
select lpad/rpad(string str,int length,string pad)
select ltrim/rtrim(string A)
- 返回当前时间的日期
select current_date;
- 对数组进行排序
select sort_array(Array<T>)
- 转型
select cast(列名 as 新类型)
字符函数:
返回值 | 函数 | 描述 |
---|---|---|
string | concat(string|binary A, string|binary B...) | 对二进制字节码或字符串按次序进行拼接 |
int | instr(string str, string substr) | 查找字符串str中子字符串substr出现的位置 |
int | length(string A) | 返回字符串的长度 |
int | locate(string substr, string str[, int pos]) | 查找字符串str中的pos位置后字符串substr第一次出现的位置 |
string | regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT) | 按正则表达式PATTERN将字符串中符合条件的部分替换成REPLACEMENT所指定的字符串 |
string | lower(string A) /upper(string A) | 将字符串A的所有字母转换成小写/大写字母 |
array | split(string str, string pat) | 按照正则表达式pat来分割字符串str |
string | substr(string|binary A, int start, int len) substring(string|binary A, int start, int len) | 对字符串A,从start位置开始截取长度为len的字符串并返回 |
string | trim(string A) | 将字符串A前后出现的空格去掉 |
map | str_to_map(text[, delimiter1, delimiter2]) | 将字符串str按照指定分隔符转换成Map |
binary | encode(string src, string charset) | 用指定字符集charset将字符串编码成二进制值 |
集合函数:
返回值 | 函数 | 描述 |
---|---|---|
int | size(Map(K,V)) | 返回map中键值对个数 |
int | size(Array) | 返回数组的长度 |
array(K) | map_keys(Map(K,V)) | 返回map中的所有key |
array(V) | map_values(Map(K,V)) | 返回map中的所有value |
boolean | array_contains(Array, value) | 如该数组Array包含value返回true,否则返回false |
array | sort_array(Array) | 对数组进行排序 |
jar包:
- 临时jar
add jar jar包全路径;
create temporary function 方法名 as 'jar包方法来源的类名';
select 方法名('asdadadnadiw');
desc function abs;
- 永久jar
create function timeDiff as 'cn.kgc.kb11.udf.TimeDiff'
using jar 'hdfs:///hive/jars/Hive-maven-1.0-SNAPSHOT.jar';
select timeDiff("2021-04-06 12:23:54","2023-04-01 10:20:25",5);