hive-常用操作及函數

select '我們' from file_cto_user_info limit 1
select 1 from file_cto_user_info where 'football' like 'foot____' limit 1
--注意:否定比較時候用NOT A LIKE B
select 1 from file_cto_user_info where NOT 'football' like 'fff%' limit 1
 
--注意:判斷一個字符串是否全爲數字:
select 1 from file_cto_user_info where '123456' rlike '^\\d+$' limit 1
select 1 from file_cto_user_info where 'footbar' REGEXP '^f.*r$' limit 1
 
 --注意:hive中最高精度的數據類型是double,只精確到小數點後16位,在做除法運算的時候要特別注意
select ceil(28.0/6.999999999999999999999) from file_cto_user_info limit 1

--注意:精度在hive中是個很大的問題,類似這樣的操作最好通過round指定精度
select round(8.4 % 4 , 2) from file_cto_user_info limit 1

--邏輯非操作: NOT
select 1 from file_cto_user_info where not 1=2 limit 1

--向下取整函數: floor
select floor(3.1415926) from file_cto_user_info limit 1
--向上取整函數: ceil
select ceil(3.1415926) from file_cto_user_info limit 1
select ceiling(3.1415926) from file_cto_user_info limit 1

--隨機數
select rand(100) from file_cto_user_info limit 1

--開平方
select sqrt(16) from file_cto_user_info limit 1

--二進制函數: bin
select bin(7) from file_cto_user_info limit 1

--十六進制函數: hex
 select hex('abc') from file_cto_user_info limit 1

--反轉十六進制函數: unhex
select unhex(616263) from file_cto_user_info limit 1

--進制轉換函數: conv
--說明: 將數值num從from_base進制轉化到to_base進制
select conv(8,10,2) from file_cto_user_info limit 1
select conv(111,2,10) from file_cto_user_info limit 1
select conv(9,10,5) from file_cto_user_info limit 1

--絕對值函數: abs
select abs(-3.9) from file_cto_user_info limit 1

--正取餘函數: pmod
select pmod(-9,4) from file_cto_user_info limit 1

--相反數
select negative(8) from file_cto_user_info limit 1

--UNIX時間戳轉日期函數: from_unixtime
select from_unixtime(1458814863,'yyyy-MM-dd hh:mm:ss') from file_cto_user_info limit 1
select from_unixtime(1458814863,'yyyy-MM-dd HH:mm:ss') from file_cto_user_info limit 1
select from_unixtime(1458814863,'HH') from file_cto_user_info limit 1

select from_unixtime(1426672632,'yyyy-MM-dd') from file_cto_user_info limit 1
select from_unixtime(cast(substr(1454285291013,1,10) as bigint),'yyyyMMdd hh:mm:ss') from file_cto_user_info limit 1



select from_unixtime(unix_timestamp(),'yyyy-MM-dd') from file_cto_user_info limit 1

--獲取當前UNIX時間戳函數: unix_timestamp
select unix_timestamp() from file_cto_user_info limit 1
--日期轉時間戳
select unix_timestamp('2011-12-07 13:01:03') from file_cto_user_info limit 1

--日期時間轉日期函數: to_date
select to_date('2011-12-08 10:03:01') from file_cto_user_info limit 1

--日期轉年函數: year
select year('2012-12-08') from file_cto_user_info limit 1
select year('2011-12-08 10:03:01') from file_cto_user_info limit 1

--日期轉月函數: month
select month('2011-12-08 10:03:01') from file_cto_user_info limit 1;
select month('2011-08-08') from file_cto_user_info limit 1

--日期轉天函數: day
select day('2011-12-08 10:03:01') from file_cto_user_info limit 1;
select day('2011-08-12') from file_cto_user_info limit 1

--日期轉小時函數: hour
select hour('2011-12-08 10:03:01') from file_cto_user_info limit 1;

select concat(split('2011-12-08 10:03:01',' ')[0],' ',concat(substr(split('2011-12-08 10:03:01',' ')[1],1,2)+8,split('2011-12-08 10:03:01',' ')[1],3,6))
from file_cto_user_info limit 1;

--日期轉分鐘函數: minute
select minute('2011-12-08 10:03:01') from file_cto_user_info limit 1;

--日期轉秒函數: second
select second('2011-12-08 10:03:01') from file_cto_user_info limit 1;

--日期轉周函數: weekofyear  返回指定日期所在一年中的星期號,範圍爲0到53。
select weekofyear('2011-12-08 10:03:01') from file_cto_user_info limit 1;

--兩個時間參數的日期之差
select datediff('2015-11-30','2015-11-28') from file_cto_user_info limit 1;

--返回周幾
select pmod(datediff('2015-11-09','2013-01-07'),7)+1 from file_cto_user_info limit 1;

--給定時間,在現在時間基礎上加上指定的時間段。
select date_add('2015-04-05 10:00:00',0.5) from file_cto_user_info limit 1;
from_unixtime(unix_timestamp(),'yyyy-MM-dd hh:mm:ss')
--給定時間,在此基礎上減去指定的時間段
select date_sub('2015-04-05',5) from file_cto_user_info limit 1;

--判斷是否滿足條件,如果滿足返回一個值,如果不滿足則返回另一個值
select if(1>0,'條件滿足','條件爲滿足') from file_cto_user_info limit 1;

--返回一組數據中,第一個不爲NULL的值,如果均爲NULL,返回NULL
select coalesce(null,'1',2,'3','',null) from file_cto_user_info limit 1;

--返回倒序字符串
select reverse('abcdefg') from file_cto_user_info limit 1;

--鏈接多個字符串,字符串之間以指定的分隔符分開。
select concat_ws('@','1111','2222','3333') from file_cto_user_info limit 1;

--字符串A中的B字符被C字符替代
select regexp_replace('asdc://','://','a') from file_cto_user_info limit 1;

--通過下標返回正則表達式指定的部分。
select regexp_extract('asdc','a(*)dc',1) from file_cto_user_info limit 1;

--獲得主機名
select parse_url('http://www.csdn.net/aaa.txt','HOST') from file_cto_user_info limit 1;

--獲得參數值
select parse_url('http://www.csdn.net/aaa.htm?userid=1234','userid') from file_cto_user_info limit 1;

--substr
set mapred.job.queue.name=hadoop;
select substr('2015-05-04',1,4) from file_cto_user_info limit 1;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章