取反
select !(1=1);
>false
不等于号,示例:
select 1 from dul where 2!=1;
>1
取余操作,示例:
select 41%5
>1
按位与操作,示例:
select 4&8
>0
数据运算符乘,示例:
select 2*3
>6
数学运算符加号,实例:
select 1=+2
>3
数学运算符加号,实例:
select 3-1
>2
数学运算符除号,实例
select 4/2
>2
表达式A小于表达式B为true,否则为false
select 1 from dul where 0<1
>1
表达式A小于等于表达式B为true,否则为false
select 1 from dul where 0<1
>1
可以用来判断null值,如果两个值都为null, 则为true;
select null<=>1;
>false
不等号比较
select * from test where 1 <> 2
表达式A和表达式B相等,则为true,否则未false
select 1 from dul where 1=1
>1
select 1=='1';
>true
表达式A大于表达式B为true,否则为false
select 1 from dul where 2>1
>1
表达式A大于等于表达式B为true,否则为false
select 1 from dul where 1>=1
>1
按位异或操作,示例:
select 4^8
>12
取数字的绝对值
select abs('-1')
>1
如果-1<=X<=1,返回X的反余弦值。否则返回NaN
select acos(0.6216099682706644)
>0.9
select add_months('2022-10-21 12',1)
>2022-11-21
逻辑并运算符,示例:
select 1 from dul where 1=1 and 2=2;
>1
使用给定的表达式,构造一个 array 数据结构
select array(1,2,3)
>[1,2,3]
array_contains(数组,值)
select array_contains(array(1,2,3),1);
>true
返回字符串str的第一个字符的ascii码,示例:
select ascii('abcde');
>97
返回a的反正弦值,示例:
select asin(0.7173560908995228);
>0.8
select assert_true(1<2) -- 返回null
select assert_true(1>2) -- 抛出异常
返回a的反正切值,示例:
select atan(1.0296385570503641);
>0.8
计算平均值,实例
select avg(a) from (select 1 union all select 2 union all select 3) t
>2
将二进制bin转换成64位字符串
select base64(cast('abc:123' as binary));
>YWJjOjEyMw==
作为条件两边包含的,示例:
select 1 from dul where 1 between 1 and 2;
>1
返回a的二进制代码表示,a为bigint类型,示例:
select bin(7);
>111
bround(double a),bround(double a, int d)
银行家舍入法(1-4:舍,6-9:进,5->前位数是奇数:进,5->前位数是偶:舍)
select bround(3.215);
>3
select bround(3.25,1);
>3.2
Select case 100 when 50 then 'tom' when 100 then 'mary' else 'tim' end from dual;
>'mary'
求a的立方根
select cbrt(8);
>2
说明:返回等于或者大于该double变量的最小的整数,举例:
select ceil(3.1415926) ;
> 4
向上取整
select ceil(2.3);
>3
返回指定数字对应的ASCII 字符,如果指定的数字大于256,将对该数字对256取模,示例:
select chr(97);
>a
如果第一个参数为空,那就取第二个值
select coalesce(null,null,1,2)
>1
将一列的数据进行聚合,最后结果为一个不去重的数组,实例:
select collect_list(a) from (select 1 as a union select 2 union select 3) t
>[1,2,3]
将一列的数据进行聚合,最后结果为一个不去重的集合,实例:
select collect_set(a) from (select 1 as a union select 2 union select 2) t
>[1,2]
compute_stats
ANALYZE TABLE table_name PARTITION(dt='20230728') COMPUTE STATISTICS;
#查看结果
DESCRIBE extended table_name PARTITION(dt='20230728');
将字符串按照顺序进行拼接
select concat('a','b','c')
>'abc'
所有的字符串按照指定的拼接符进行拼接,实例:
select concat_ws(',','a','b','c')
>'a,b,c'
context_ngrams(array
select context_ngrams(sentences('hello word!hello hive,hi hive,hello hive'),array('hello',null),1) ;
>[{"ngram":["hive"],"estfrequency":2.0}]
conv(BIGINT/string num, int from_base, int to_base)
将bigint/string数据num从from_base进制转化到to_base进制
select conv(17,10,16)
>11
返回两列数值的相关系数
返回a的余弦值,示例:
select cos(0.9);
>0.6216099682706644
个数统计函数,示例
select count(*) from (select 1 union all select 2) t;
>2
求指定列数值的协方差
求指定列数值的样本协方差
加密
select crc32('abc');
>891568578
使用给定的 tag 和表达式,构造一个 uniontype 数据结构。tag 表示使用第 tag 个
表达式作为 uniontype 的 value
select create_union(0,'ss',array(1,2,3)) from iteblog;
> {0:"ss"}
select create_union(1,'ss',array(1,2,3)) from iteblog;
>{1:[1,2,3]}
select create_union(2,'ss',array(1,2,3),'aa') from iteblog;
> {2:'aa'}
开窗函函数,单独记录,链接: 传送门
获取当前所在的database空间,示例:
select current_database()
>test
获取当前的日期,示例:
select current_date()
>20220-01-02
获取当前时间的时间戳
select current_timestamp()
>
获取当前的用户,示例:
select current_user()
>hive
日期计算函数,在第一个日期上加对应日期,示例:
select date_add('2022-01-03',)
格式化日期,示例:
select date_format('2019-1-1', 'yyyy-MM-dd');
>'2019-01-01'
返回开始日期startdate减少days天后的日期,举例:
select date_sub('2012-12-08',10);
>2012-11-28
返回结束日期减去开始日期的天数。
select datediff('2012-12-08','2012-05-09');
>213
返回日期中的天。
select day('2011-12-08 10:03:01');
>8
返回当前日期是当月的第几天
select dayofmonth('2022-12-13');
>13
返回日期那天的周几,
select dayofweek('2023-07-28');
>6
使⽤指定的字符集charset将⼆进制值bin解码成字符串,⽀持的字符集有:‘US-ASCII’, ‘ISO-8859-1’, ‘UTF-8’, ‘UTF-
16BE’, ‘UTF-16LE’, ‘UTF-16’,如果任意输⼊参数为NULL都将返回NULL
select decode(cast('abc:123' as binary),'US-ASCII');
>abc:123
弧度值转角度值,返回a的角度值,示例:
select degrees(1);
>57.29577951308232
窗口函数,排序字段值相同时,序号相同,下一个序号顺序自增,窗口函数单独记录,链接: 传送门
两数相除取商,与%相反;
SELECT -10 div 3;
>-3
数学常数e
select e();
>2.718281828459045
返回给定字符串集中的第N个,若不存在则返回null。例如:
select elt(2,'hello','world')
>'world'
使用charset方式,将字符串src编码为二进制bin。支持的字符集有:‘US-ASCII’, ‘ISO-8859-1’, ‘UTF-8’, ‘UTF-16BE’, ‘UTF-16LE’, ‘UTF-16’
返回一个ewah压缩的列的位图表示.
返回ewah压缩的位图,即两个位图的按位和。
测试ewah压缩位图是否全是零的谓词
返回一个ewah压缩的位图,即两个位图的按位或。
返回自然对数e的a次方,a为小数,示例:
select exp(3);
>20.085536923187668
对于a中每个元素,将生成一行且包含改元素
求a的阶乘,3!=321 ,示例:
select factorial(3);
>6
返回val在val1,val2…的位置。若不存在则返回0。例如:
select field('world','say','hello','world')
>3
find_in_set(string str, string strList),返回str在strlist第一次出现的位置,strlist是用逗号分割的字符串。如果没有找该str字符,则返回0
select find_in_set('ab','ef,ab,de') from lxw_dual:
>2
常口函数,单独记录,链接: 传送门
first_value—最多接受两个参数。第一个参数是你想要的列的第一个值,第二个参数必须是一个布尔值(可选),默认是假的。如果设置为真,它跳过null值
select a,first_value(a)over(order by a) from (select null a union all select 1 union all select 3) t
>null,null
> 1 ,null
> 2 ,null
说明:返回等于或者小于该double变量的最大的整数,举例:
select floor(3.1415926);
> 3
入参必须是timestamp,示例:
select floor_day(CURRENT_TIMESTAMP())
>2023-07-28 00:00:00
入参必须是timestamp,示例:
select floor_hour(CURRENT_TIMESTAMP())
>2023-07-28 10:00:00
入参必须是timestamp,示例:
select floor_minute(CURRENT_TIMESTAMP())
>2023-07-28 10:06:00
入参必须是timestamp,示例:
select floor_month(CURRENT_TIMESTAMP())
>2023-07-01 00:00:00
入参必须是timestamp,返回四分之一粒度
param的时间戳,示例:
select floor_quarter(CURRENT_TIMESTAMP())
>2023-01-01 00:00:00
入参必须是timestamp,示例:
select floor_second(CURRENT_TIMESTAMP())
>2023-07-28 10:06:12
入参必须是timestamp, 返回的是当前所在周周一的日期 ,示例:
select floor_week(CURRENT_TIMESTAMP())
>2023-07-24 00:00:00
入参必须是timestamp,示例:
select floor_year(CURRENT_TIMESTAMP())
>2023-01-01 00:00:00
将数字精确到d位小数,例如:
select format_number(5.123456, 4)
>5.1235
转化UNIX时间戳(从1970-01-01 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式
select from_unixtime(1598079966,'yyyy-MM-dd HH:mm:ss');
>2020-08-22 15:06:06
如果给定的时间戳并非UTC,则将其转化成指定时区下的时间戳,示例:
select from_utc_timestamp('1970-01-01 08:00:00','PST');
>1970-01-01
解析json的字符串json_string,返回path指定内容。如果输⼊的json字符串⽆效,那么返回NULL。注意此路径上JSON字符串只
能由数字 字母 下划线组成且不能有⼤写字母和特殊字符,且key不能由数字开头,这是由于Hive对列名的限制
select get_json_object('{
"store": {
"fruit": [
{
"weight": 8,
"type": "apple"
},
{
"weight": 9,
"type": "pear"
}
],
"bicycle": {
"price": 19.95,
"color": "red"
}
},
"email": "amy@only_for_json_udf_test.net",
"owner": "amy"
}','$.owner')
>amy
求最大值,示例:
select greatest(1,2,3);
>3
分组,sql基本都会用到不做介绍
取str的hash值
select hash('abc');
>96354
hex(bigint a),hex(string a)
如果变量是int类型,那么返回a的十六进制表示,如果变量是string类型则返回字符串的16进制表示,示例:
select hex(17);
>11
select hex('abc');
>616263
已b为基准计算col的直方图信息,示例:
select histogram_numeric(100,5);
>[{"x":100.0,"y":1.0}]
返回日期中的小时,示例:
select hour('2021-10-01 12:22:23');
>12
条件判断,实例
select if(1=2,'a','b')
>'b'
判断是否包含,示例
select 1 from dual where 1 in (1,2,3,4);
>1
in_file(string str, string filename)
如果文件名为filename的文件中有一行数据与字符串str匹配成功就返回TRUE
返回参数1中的指定元素
select index(array('a','b','c'),2);
>c
返回字符串,每个单词的第一个字母为大写,所有其他字母为小写。单词由空格分隔
select initcap('abc');
>'Abc'
查找字符串str中子字符串sbustr出现的位置,如果查找失败将返回0;
select instr('dvfgefggdgaa,'aa'');
>11
该方法不是直接调用它来使用的,它为“INTERVAL(intervalArg)intervalType”构造提供了内部支持
如果a为非null就返回true,示例:
select isnotnull(5)
>true
表达式A为null,则为true,否则为false
select 1 from dul where null is null
>1
– hive调用java方法
select java_method("java.lang.Math","max",100,200);
>200
jsonStr是包含JSON数据的字符串,key1,key2等是我们要获取的JSON对象的键,如果我们查询的键不存在,json_tuple函数将返回NULL。例如:
SELECT json_tuple('{"name":"Alice","age":30}','name' as c1 ,'age'as c2);
> c1 c2
>Alice 30
分析函数,开窗函数单独记录,链接: 传送门
返回这个月的最后一天的日期,精确到天,示例
select last_day('2022-07-01 10:01:00');
>2022-07-31
开窗函数单独记录,链接: 传送门
返回字符串小写格式
select lcase('abSEd');
>absed
开窗函数,链接: 传送门
求最小值,示例:
select least(1,2,3);
>1
返回字符串A的长度,举例:
select length('abcedfg');
> 7
返回两个字符串之间的Levenshtein距离。(Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符)
select levenshtein('kitten', 'sitting')
>3
简单模糊匹配,示例:
select 1 from dul where 'abcd' like '%b%';
>1
返回a的自然对数
select ln(7.38905609893065);
>2.0
返回substr在str的pos位置后,第一次出现的位置,pos非必传。例如l:
select locate('a', 'abcabc')
>1
select locate('a', 'abcabc',1)
>1
select locate('a', 'abcabc',2)
>4
以base为底a的对数,示例:
select log(4256);
>4.0
返回以10为底a的对数,示例:
select log10(100);
>2.0
返回以2为底的a的对数,a为可视小数,示例:
select log2(8);
>3.0
返回当前会话的用户,示例:
select logged_in_user()
>test
返回字符串的小写形式,示例:
select lower('ABC');
>'abc'
将str进⾏⽤pad进⾏左补⾜到len位,从左边开始对字符串str使⽤字符串pad填充,最终len长度为⽌,如果字符串str本⾝长度⽐len
⼤的话,将去掉多余的部分
select lpad('abc',10,'td');
>tdtdtdtabc
去掉字符串A前面的空格
select ltrim(' abc fg');
>abc fg
使用给定的 key-value 对,构造一个 map 数据结构
select map('k1','v1','k2','v2') from iteblog;
>{"k2":"v2","k1":"v1"}
返回map结构所有的key,结果为数组
select map_keys(map('k1','v1','k2','v2'));
>["k1","k2"]
返回map结构所有的value,结果为数组
select map_keys(map('k1','v1','k2','v2'));
>["v1","v2"]
输出默认脱敏后的结果
select mask(要加密字段) from 表名;
select mask(要加密字段,'X','x','#') from 表名 -- 输出自定义脱敏后的结果
对前n个字符进行脱敏
select mask_first_n(要加密的字段,n) from 表名
对字段进行hash操作,若是非string类型的字段此函数就返回null
select mask_hash(字段) from 表名;
对后n个字符进行脱敏,示例:
select mask_last_n(要加密的字段,n) from 表名;
对除了前n个字符之外的字符进行脱敏,示例:
select mask_show_first_n(要加密的字段,n) from 表名;
对除了后n个字符之外的字符进行脱敏
select mask_show_last_n(要加密的字段,n) from 表名;
暂时没弄明白
select
tpath
,tpath[0]
,tpath[0].user_id
,tpath[0].visit_time
,concat(tpath[0].user_id,"_",unix_timestamp(tpath[0].visit_time)) as session_id
from matchpath(
on
(select user_id,visit_time
from user_visit
) a
distribute by user_id sort by visit_time
arg1("A.B*"),
arg2("A"),
arg3(floor((unix_timestamp(visit_time) - unix_timestamp(lag(visit_time,1,"1900-01-01 00:00:00")))/60) >= 30),
arg4("B"),
arg5(floor((unix_timestamp(visit_time) - unix_timestamp(lag(visit_time,1,"1900-01-01 00:00:00")))/60) < 30),
arg6('user_id,visit_time,tpath')
)
获取最大值,示例:
select max(a) from (select 1 as a union select 4 union all select 3) t
>4
返回md5码,算是简单的加密
select md5('abc')
900150983cd24fb0d6963f7d28e17f72
获取最小值,示例:
select min(a) from (select 1 as a union select 4 union all select 3) t
>1
返回日期中的分钟
select minute('2022-10-01 12:22:23'):
>22
返回日期中的月份
select month('2011-12-08 10:03:01');
>12
返回date1和date2之间相差的月份
select months_between('2020-06-01','2020-07-01');
>-1
相比struct可以取别名,示例:
select named_struct('a',1,'b','aaa','c',FALSE) from tablename;
>{"a":1,"b":"aaa","c":false}
返回 a的相反数,示例:
select negative(-5);
>5
返回当前时间的下一个星期X所对应的日期,示例
select next_day('2015-01-14','TU');
>2015-01-20
统计相同单词数量,倒序取top k,示例:
select ngrams(sentences('hello word!hello hive,hi hive,hello hive'),1,1);
>[{"ngram":["hive"],"estfrequency":3.0}]
/*
noop
noopstreaming
noopwithmap
noopwithmapstreaming
**/ 无意义函数
如果A为false,或者A为null,则为true,否则为false
select 1 from dul where not 1=2
>1
将有序分区划分为x个称为存储桶的组,并为该分区中的每一行分配存储桶编号。 (此方式存储可以快速计算分位数)
如果value值为null,就返回default_value,示例:
select nvl(null,5);
>5
A与B,任意一个或2个为true,则为true,否则为false
select 1 from dul where 1=2 or 2=2
>1
返回URL中指定的部分。partToExtract的有效值为:HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO.
select select parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST');
>facebook.com
select parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY','k1');
>v1
select parse_url('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1', 'PATH');
>/path1/p.php
返回从URL中抽取指定N部分的内容,参数url是URL字符串,⽽参数p1,p2,…是要抽取的部分,这个参数包含HOST, PATH,
QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO, QUERY:
窗口函数, 含义就是 当前行-1 / 当前组总行数-1,链接: 传送门
求准确的第pth个百分位数,p必须介于0和1之间,但col字段目前只支持整数,
求近似的第pth个百分位数,p必须介于0和1之间,返回类型为double,但是col字段⽀持浮点类型。参数B控制内存消耗的近似精
度,B越⼤,结果的准确度越⾼。默认为10,000。当col字段中的distinct值的个数⼩于B时,结果为准确的百分位数。
之后后⾯可以输⼊多个百分位数,返回类型也为array,其中为对应的百分位数
圆周率π
select pi();
>3.141592653589793
返回正的a除以b的余数,a,b可为int/double
select pmod(9,4);
>1
对于a中每个元素,将生成一行且包含改元素,同时还返回各元素的行号,通常用来炸裂多列
返回a
select positive(-10);
>-10
返回a的p次幂,举例:
select pow(2,4) ;
> 16.0
返回以 a 的 p 次幂,与 pow 功能相同
select power(2,4) ;
> 16.0
按照printf风格格式输出字符串,示例:
select printf('abfhg');
>abfhg
返回当前时间属于哪个季度
select quarter('2015-04-08');
>2
角度值转换成弧度值,返回a的弧度值
select radians(57.29577951308232);
>1.0
返回一个0到1范围内的随机数。如果指定种子seed,则会返回固定的随机数,示例:
select rand();
>0.5577432776034763
开窗排序函数,链接: 传送门
– 反射调用
select reflect("java.lang.Math","min",100,200);
>100
/*
reflect2
*/
如果字符串A或者字符串B为NULL,则返回NULL;如果字符串A符合JAVA正则表达式B的正则语法,则为TRUE;否则为FALSE。
select 'football' regexp '^footba';
>true;
select regexp('football', 'ba');
>true
返回字符串subject与正则表达式pattern匹配后的index部分。例如:
select regexp_extract('100-300', '(d+)-(d+)', 2)
>300
将字符串subject与正则表达式pattern匹配上部分用REPLACEMENT进行替换并返回。例如:
select regexp_replace('100-200', '(d+)', 'num')
>'num-num'
将字符串str重复n次,示例:
select repeat('a',3);
>'aaa'
替换字符串中指定的字符串,示例:
select replace('abcdefg','d','')
>'abcefg'
反转字符串,示例:
select reverse("abcedfg");
>gfdecba
rlike 相比于like 支持正则表达式,示例:
select 'foobar' rlike 'foo';
>true
返回指定精度d的double类型
select round(3.1415926,4);
> 3.1416
开窗排序函数,链接: 传送门
与lpad对应,将str截取长度len位,若str长度不足len则,右用pad补充。例如:
select rpad('abcdef', 5, 'a')
>'abcde'
select rpad('abc', 5, 'a')
>'abcaa'
出去字符串右边的空格,示例:
select rtrim('abc ');
>'abc'
返回日期中的秒
select second('2022-10-01 12:22:23');
>23
entences(string str, string lang, string locale)
将字符串str按照句子划分成单词。其中每个句子为一个数组,句子中单词为数组中元素。lang和locale为可选参数。其中lang为语言选项(如:'en’代表英文),locale代表地区。例子:
select sentences('Hello there! How are you?')
>( ('Hello', 'there'), ('How', 'are', 'you') )
Hive1.3.0起,计算字符串或二进制的SHA-1摘要,并以十六进制字符串的形式返回。
Hive1.3.0起,计算字符串或二进制的SHA-1摘要,并以十六进制字符串的形式返回。
Hive1.3.0起,计算SHA-2系列哈希函数(SHA-224, SHA-256, SHA-384, and SHA-512)。第二个参数为结果的位数,只能是224、256(0)、384或512.java8+支持224。如果参数为null或位数不合法则返回null。
按位左移
select shiftleft(1,3)
>8
按位右移
select shiftright(8,3)
>1
无符号按位右移动
select shiftrightunsigned(8,3)
>1
如果a是整数则返回1.0,是负数则返回-1.0,否则返回0.0
select sign(-4);
>-1.0
返回a的正弦值,示例:
select sin(0.8);
>0.7173560908995228
返回array类型的长度
select size(array('100','101','102','103'))
>4
按照自然顺序对数组进行排序并返回
返回字符串的soundex代码。例如:
select soundex('Miller');
>M460
返回指定的空格个数
select space(3);
>' '
按照正则表达式pat拆分字符串str。例如:
select split('a,b,c,d',',');
>['a','b','c','d']
返回a的平方根,示例
select sqrt(16);
>4
stack(int n,k1,…)
n设为3,将后面6个元素按顺序分为3行2列
select stack(3,1,2,3,4,5,6);
col0 col1
1 2
3 4
5 6
n设为3,将后面7个元素按顺序分为3行3列
select stack(3,1,2,3,4,5,6,7);
col0 col1 col2
1 2 3
4 5 6
7 NULL NULL
std函数计算一组数据的样本标准差,用于估计整个数据集的标准差。它基于一组样本数据,将每个数据点与数据集的平均值之差的平方求和,然后除以样本数量减一,最后取平方根。
stddev函数计算一组数据的总体标准差,用于准确估计整个数据集的标准差。它与std函数类似,但是将每个数据点与数据集的平均值之差的平方求和后直接取平方根,
该函数计算总体标准偏离,并返回总体变量的平⽅根,其返回值与VAR_POP函数的平⽅根相同(求指定列数值的标准偏差)
该函数计算样本标准偏离,(求指定列数值的样本标准偏差)
将text分割为数个键值对。其中delimiter1和delimiter2为可选参数。delimiter1(默认为’:’)代表键k与值v的分隔符。delimiter2(默认为’,’)代表键值对k-v之间的分隔符。例如:
select str_to_map('column1:1,column2:2'},':',',')
>{'column1':'1','column2':'2'}
使用给定的表达式,构造一个 struct 数据结构
返回字符串A从start位置到结尾的字符串,举例:
select substr('abcde',3);
> cde
返回字符串A从start位置开始,长度为len的字符串
举例:
hive> select substr('abcde',3,2);
cd
截取第count分隔符之前的字符串,如count为正则从左边开始截取,如果为负则从右边开始截取
select substring_index('a,b,c',',',1);
>a
聚合累加函数,示例
select sum(a) from (select 1 union all select 2) t
>3
返回a的反正切值,示例:
select tan(0.8);
>1.0296385570503641
将标准格式时间戳转成日期格式,实例:
select to_date('2022-06-21 13:21:13') from dual;
>'2022-06-21'
unix时间戳timestamp转成当前时区时间格式format,示例:
select from_unixtime(1123240993,'yyyy-MM-dd HH:mm:ss') from dual;
> 2005-08-05 19:23:13
如果给定的时间戳指定的时区下时间戳,则将其转化成UTC下的时间戳
select to_utc_timestamp('1970-01-01 08:00:00','PST');
>1970-01-01 00:00:00
translate(string|char|varchar input, string|char|varchar from, string|char|varchar to)
将input字符串中出现在from中的每个字符替换为to中的相应字符以后的字符串。 若from比to字符串长,那么在from中比to中多出的字符将会被删除。与PostgreSQL中对应函数等价。例如:
select translate('abcdefga','abc','wo')
>'wodefgw'
去除左右空格
select trim(' abc ')
>'abc'
返回时间的最开始的年份或月份,示例:
select trunc('2016-6-26','MM');
>2016-06-01
select trunc('2016-6-26','YY');
>2016-01-01
将字符串转换成大写字母。示例:
select ucase('abc');
>ABC
解码base64,示例:
select unbase64('YWJjOjEyMw==');
>abc:123
返回十六进制字符串代码的字符串,hex的逆方法,示例:
select unhex('616263');
>'abc'
获取当前时区的unix时间戳,示例
select unix_
将小写转大写,示例
select upper('a')
>A
生成随机字符串函数,示例:
select uuid();
>42bd1f4d-b0a6-4b48-a5dc-6142ffab5ba1
统计结果集中非空集合的总体变量(忽略null)
统计结果集中非空集合的样本变量(忽略null)
返回组内查询列的方差(也可称为总体方差),也可写成var_pop(col)
查看hive的版本
select version();
返回日期在当年的周数
select weekofyear('2019-06-21 12:11:22') from dual;
>25
条件判断,示例:
select case 1 when 1 then 'a' else 'b' end from dul;
>'a'
所有开窗函数的基础
返回一个 Hive 字符串数组,UDF 与模式无关 - 不执行 XML 验证。 但是,格式错误的 xml(例如,1)将导致抛出运行时异常。
select xpath('b1b2','a/*/text()');
>[b1","b2]
select xpath('b1b2','//@id')
>['foo', 'bar']
SELECT xpath ('b1b2b3c1 c2 ', 'a/*[@class="bb"]/text()');
>[b1","c1]
如果 XPath 表达式的计算结果为 true,或者找到匹配的节点,则返回 true。
SELECT xpath_boolean ('b', 'a/b = "b"')
>true
SELECT xpath_boolean ('b', 'a/b')
>true
这些函数返回一个整数数值,如果没有找到匹配项,或者找到匹配项但该值不是数字,则返回零值。支持数学运算。如果值溢出返回类型,则返回该类型的最大值.
SELECT xpath_int ('124 8 ', 'sum(a/*)')
>15
SELECT xpath_int ('124 8 ', 'sum(a/b)')
>7
SELECT xpath_int ('124 8 ', 'sum(a/b[@class="odd"])')
>5
SELECT xpath_double ('200000000040000000000 ', 'a/b * a/c')
>8.0E19
SELECT xpath_double ('这不是一个数字', 'a')
>NaN
path_string() 函数返回第一个匹配节点的文本。
SELECT xpath_string ('bbcc ', 'a/b') #获取节点“a/b”的文本:
>bb
SELECT xpath_string ('bbcc ', 'a')#获取节点“a”的文本。因为 'a' 有带有文本的子节点,所以结果是来自子节点的文本的组合。
>bbcc
SELECT xpath_string ('b1b2', '//b')#获取匹配 '//b' 的第一个节点的文本
>b1
SELECT xpath_string ('b1b2', 'a/b[2]');#获取第二个匹配节点
>b2
SELECT xpath_string ('b1b2', 'a/b[@id="b_2"]');#从第一个具有属性 'id' 和值 'b_2' 的节点获取文本:
>b2
计算日期的年份,实例:
select year(2022-11-01)
>2022
逻辑运算符,实例:
select 1=1|2=1
>false
~