hive-常用操作及函式
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;