在hive内部有许多函数,如下:
内置运算符
关系运算符
算术运算符
逻辑运算符
复杂类型函数
内置函数内置聚合函数
数学函数
收集函数
类型转换函数
日期函数
条件函数
字符函数
内置聚合函数
内置表生成函数
1.1关系运算符
1.2算术运算符
1.3逻辑运算符
1.4复杂类型函数
2.1数学函数
2.2收集函数
array/map类型大小: size 返回array/map类型的元素数量
2.3类型转换函数
基础类型之间强制转换:cast(field/expr as )
2.4日期函数
2.5条件函数
2.6字符函数
3.内置聚合函数
4.内置表生成函数
测试:
1.1关系运算符
关系运算符:= <=> > >= < <=
– select 5<=>5 true
– select 6>=5 true
– select 8<=7 false
like/rlike比较
– select ‘football’ like ‘foot%’ true
– select ‘[email protected]’ rlike ‘\@[0-9a-z]{2,}.(com|cn|org|edu)’ true
regexp
– select ‘football’ regexp ‘\w{9,}[a-z]’ false
1.2算术运算符
复制代码
– select 5+5 10
– select 5-5 0
– select 5*5 25
– select 5/5 1
– select 5%4 1
– select 5&9 1
– select 5|9 13
– select 5^9 12
复制代码
1.4复杂类型函数
– select array(1,4,5,6,8) [1,4,5,6,8]
– select map(‘name’,‘张三’,‘age’,18) {“name”:“张三”,“age”:“18”}
– select struct(array(1,3,5),map(‘name’,‘张三’,‘age’,18)) {“col1”:[1,3,5],“col2”:{“name”:“张三”,“age”:“18”}}
2.1数学函数
复制代码
– select round(5.3423) 5
– select round(5.345,2) 5.35
– select floor(5.9) 5
– select ceil(5.1) 6
– select rand() 0.7311469360199058
– select exp(2) 7.38905609893065
– select log(5,25) 2
– select pow(2,3) 8
– select sqrt(25) 5
– select bin(8) 1000
– select hex(16) 10
– select unhex(100)
– select abs(-10) 10
– select pmod(5,2) 1
– select sin(3.1415926/2) 0.9999999999999997
– select asin(0.9999999999999997) 1.5707963009853283
– select positive(10) 10
– select negative(10) -10
复制代码
2.2收集函数
– select size(array(1,3,4,5,6,7,8)) 7
2.4日期函数
复制代码
– select from_unixtime(0,‘yyyy-MM-dd HH:mm:ss’) 1969-12-31 19:00:00
– select unix_timestamp() 1598707426
– select to_date(‘2020-1-1’) 2020-01-01
– select year(current_date()) 2020
– select month(current_date()) 8
– select day(current_date()) 29
– select hour(current_timestamp()) 9
– select minute(current_timestamp()) 26
– select second(current_timestamp()) 15
– select weekofyear(current_date()) 35
– select datediff(current_date(),‘2020-08-01’) 28
– select date_add(current_date(),1) 2020-08-30
– select date_sub(current_date(),1) 2020-08-28
– select date_format(current_date(),‘y’) 2020
– select last_day(‘2020-01-02’) 2020-01-31
复制代码
2.5条件函数
– select if(1=3,3,2) 2
– select coalesce(null,3,null,4) 3
– select case when 5>9 then 4 else 0 end 0
2.6字符函数
复制代码
– select ascii(‘,’) 44
– select concat(‘张三’,‘吃饭’) 张三吃饭
– select concat_ws(‘-’,‘张三’,‘干嘛去了’) 张三-干嘛去了
– select format_number(2.4234432532,3) 2.423
– select substr(87654321,3,2) 65
– select instr(‘张三在哪’,‘在’) 3
– select length(‘324322’) 6
– select locate(‘吗’,‘吃了吗’) 3
– select printf(‘你好’) 你好
– select str_to_map(‘name:李四,age:18’,‘,’,‘:’) {“name”:“李四”,“age”:“18”}
– select upper(‘abc’) ABC
– select lower(‘ABC’) abc
– select trim(’ 你好 ‘) 你好
– select regexp_replace(‘早上好’,‘早’,‘晚’) 晚上好
– SELECT regexp_extract(‘100-200’, ‘(\d+)-(\d+)’, 1) FROM src LIMIT 1 100
– select parse_url(‘https://home.cnblogs.com/u/afeiiii/’,‘PROTOCOL’) https
– select id,get_json_object(line,’ . n a m e ′ ) n a m e , g e t j s o n o b j e c t ( l i n e , ′ .name') name,get_json_object(line,' .name′)name,getjsonobject(line,′.age’) age,get_json_object(line,‘$.gender’) gender from jsontest
– select repeat(‘a’,4) aaaa
– select split(‘howAareByou’,‘[AB]’) [“how”,“are”,“you”]
– select find_in_set(‘aa’,‘aa,bb,aa’) 1
– select sentences(‘你,吃了吗’) [[“你”,“吃了吗”]]
复制代码
4.内置表生成函数
–explode(a) - separates the elements of array a into multiple rows, or the elements of a map into multiple rows and columns explode适合array/map的拆分
–select id,t.name,t.age,t.gender from jsontest lateral view json_tuple(line,‘name’,‘age’,‘gender’)t as name,age,gender json_tuple适合String类型拆分