orcale和hive常用函數對照表(?代表未證實)


 

函數分類 oracle hive 說明
字符函數 upper('coolszy') upper(string A) ucase(string A) 將文本字符串轉換成字母全部大寫形式
lower('KUKA') lower(string A) lcase(string A) 將文本字符串轉換成字母全部小寫形式
initcap('kuKA aBc')  將每個單詞的首字母大寫,其他位置的字母小寫
concat('Hello',' world') concat(string A, string B…) 連接多個字符串,合並為一個字符串,可以接受任意數量的輸入字符串
substr('hello',2,3) substr(string A, int start, int len) substring(string A, int start, int len) 從文本字符串中指定的位置指定長度的字符。                             
length('hello') length(string A) 返回字符串的長度
lpad(‘smith’,10,'*') lpad(string str, int len, string pad) 返回指定長度的字符串,給定字符串長度小於指定長度時,由指定字符從左側填補
rpad(‘smith’,10,'*') rpad(string str, int len, string pad) 返回指定長度的字符串,給定字符串長度小於指定長度時,由指定字符從右側填補。
trim(' Mr Simth  ') trim(string A) 刪除字符串兩端的空格,字符之間的空格保留
ltrim(' Mr Simth  ') ltrim(string A) 刪除字符串左邊的空格,其他的空格保留
rtrim(' Mr Simth  ') rtrim(string A) 刪除字符串右邊的空格,其他的空格保留
reverse(‘abcdef’) reverse(string A) 返回倒序字符串
replace('HELLO','L','x') regexp_replace(string A, string B, string C) 字符串A中的B字符被C字符替代
ascii('A')  ascii(string str) 返回字符串中首字符的數字值
chr(54740) 給出整數,返回對應的字符
concat_ws(string SEP, string A, string B…) 鏈接多個字符串,字符串之間以指定的分隔符分開。
parse_url(string urlString, string partToExtract [, string keyToExtract]) 返回URL指定的部分。parse_url(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1′, ‘HOST’) 返回:’facebook.com’
space(int n) 返回指定數量的空格
repeat(string str, int n) 重復N次字符串
split(string str, string pat) 將字符串轉換為數組。
regexp_extract(string subject, string pattern, int index) 通過下標返回正則表達式指定的部分。regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 2) returns ‘bar.’
sentences(string str, string lang, string locale) 將字符串中內容按語句分組,每個單詞間以逗號分隔,最后返回數組。 例如sentences(‘Hello there! How are you?’) 返回:( (“Hello”, “there”), (“How”, “are”, “you”) )
e() 返回e的值
pi() 返回pi的值
instr('oracle traning','ra',1,2) find_in_set(string str, string strList) 在一個字符串中搜索指定的字符,返回發現指定的字符的位置
get_json_object(string json_string, string path) get_json_object('{"store":{"fruit":[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}],"bicycle":{"price":19.95,"color":"red"}},"email":"amy@only_fo_json_udf_test.net","owner":"amy"}', '$.store.fruit')
數值函數 round(double a) round(double a) 四舍五入
trunc(412.23,2) 舍去小數,但不進位(正數表示小數點后,表示小數點前)

abs(-100)
abs(double a) 返回指定值的絕對值
asin(0.5) asin(double a) 返回x的反正弦,即是X。
acos(-1) acos(double a) 返回X的反余弦,即余弦是X,
ceil(3.1415927)  ceil(3.1415927)  返回大於或等於給出數字的最小整數
sin(20) sin(double a) 返回給定角度的正弦值
cos(-3.1415927) cos(double a) 返回余弦
sqrt(64) sqrt(double a) sqrt(double a) 返回數值的平方根
exp(2) exp(double a) 返回e的n次方
floor(2345.67) floor(double a) 對給定的數字取整數
rand(),rand(int seed) 返回大於或等於0且小於1的平均分布隨機數(依重新計算而變)
ln(2.7182818) ln(double a) 返回一個數字的對數值
LOG(n1,n2) log(double base, double a) 返回給定底數及指數返回自然對數
power(2,10) pow(double a, double p) power(double a, double p) 返回某數的乘冪
ROUND和TRUNC round(double a)round(double a, int d) 按照指定的精度進行舍入
SIGN sign(double a) 取數字n的符號,大於0返回1,小於0返回-1,等於0返回0
tan(20) tan(double a) 返回數字的正切值
atan(1)  atan(1)  返回一個數字的反正切值
conv(BIGINT num, int from_base, int to_base) 將指定數值,由原來的度量體系轉換為指定的試題體系。例如CONV(‘a’,16,2),返回。參考:’1010′ 
positive(int a) positive(double a) 返回A的值,例如positive(2),返回2。
negative(int a) negative(double a) 返回A的相反數,例如negative(2),返回-2。
mod(int a, int b) mod(double a, double b) pmod(int a, int b) pmod(double a, double b) 返回a除b的余數的絕對值
日期函數 sysdate  返回當前日期
months_between(sysdate,'16-6月 -09') 返回兩個日期之間的月數 
add_months(sysdate,4) 返回加上指定月數后的日期
TO_DATE(string,'format') 將字符串轉化為ORACLE中的一個日期
TO_CHAR(date,'format') 將日期格式成所需要的類型
next_day(sysdate,'星期一') 返回當前日期之后的下一個星期一的日期
last_day(sysdate) 求本月的最后一天 
NEW_TIME(date,'this','that') 給出在this時區=other時區的日期和時間
to_date(string timestamp) 返回時間中的年月日: to_date(“1970-01-01 00:00:00″) = “1970-01-01″
unix_timestamp(string date, string pattern) 指定時間輸入格式,返回到1970年秒數:unix_timestamp(’2009-03-20′, ‘yyyy-MM-dd’) = 1237532400 參考:
unix_timestamp(string date) 指定日期參數調用UNIX_TIMESTAMP(),它返回參數值’1970- 01 – 0100:00:00′到指定日期的秒數。
unix_timestamp() 如果不帶參數的調用,返回一個Unix時間戳(從’1970- 01 – 0100:00:00′到現在的UTC秒數)為無符號整數。
year 返回指定時間的年份,范圍在1000到9999,或為”零”日期的0。
month(string date) 返回指定時間的月份,范圍為1至12月,或0一個月的一部分,如’0000-00-00′或’2008-00-00′的日期。
day(string date) dayofmonth(date) 返回指定時間的日期
hour(string date) 返回指定時間的小時,范圍為0到23。
minute(string date) 返回指定時間的秒,范圍為0到59。
weekofyear(string date) 返回指定日期所在一年中的星期號,范圍為0到53。
datediff(string enddate, string startdate) 兩個時間參數的日期之差。
date_sub(string startdate, int days) 給定時間,在此基礎上減去指定的時間段。
date_add(string startdate, int days) 給定時間,在此基礎上加上指定的時間段。
聚合函數 avg avg 求平均值
count count 統計數據
max max 求最大值
VARIANCE(DISTINCT|ALL) covar_samp(col1, col2) 兩列數值樣本協方差
var_pop(col) 返回指定列的方差
STDDEV(distinct|all) var_pop(col) 求標准差,ALL表示對所有的值求標准差,DISTINCT表示只對不同的值求標准差
min min 求最小值
sum sum 求和
percentile(col, p) 返回數值區域的百分比數值點。0<=P<=1,否則返回NULL,不支持浮點型數值。
stddev_pop(col) 返回指定列的偏差
corr(col1, col2) 返回兩列數值的相關系數
轉換函數 to_number(st[,fmt])  st從字符型數據轉換成按指定格式的數值,缺省時數值格式串的大小正好為整個數
to_char(m[,fmt]) m從一個數值轉換為指定格式的字符串fmt缺省時,fmt值的寬度正好能容納所有的有效數字
cast(expr as <type>) 類型轉換。例如將字符”1″轉換為整數:cast(’1′ as bigint),如果轉換失敗返回NULL。
hex(BIGINT a) hex(string a) 將整數或字符轉換為十六進制格式
unhex(string a) 十六進制字符轉換由數字表示的字符。
bin(BIGINT a) 返回二進制格式
degrees(double a)  將值從弧度到度
radians(double a)  將值從度轉換為弧度
nvl(m,n)  colalese 如果m值為null,返回n,否則返回m
COALESCE(T v1, T v2, …) 返回一組數據中,第一個不為NULL的值,如果均為NULL,返回NULL。
RAWTOHEXT 將一個二進制構成的字符串轉換為十六進制
HEXTORAW 將一個十六進制構成的字符串轉換為二進制
ROWIDTOCHAR 將ROWID數據類型轉換為字符類型
TO_MULTI_BYTE 將字符串中的單字節字符轉化為多字節字符
CHARTOROWID 將字符數據類型轉換為ROWID類型
其他 GREATEST 返回一組表達式中的最大值,即比較字符的編碼大小.
LEAST 返回一組表達式中的最小值 
UID 返回標識當前用戶的唯一整數
USER 返回當前用戶的名字
USEREVN 返回當前用戶環境的信息,opt可以是:
ENTRYID,SESSIONID,TERMINAL,ISDBA,LABLE,LANGUAGE,CLIENT_INFO,LANG,VSIZE
GROUP BY GROUP BY 主要用來對一組數進行統計
HAVING 無(where子句代替) 對分組統計再加限制條件
ORDER BY ORDER BY/sort by 用於對查詢到的結果進行排序輸出
DECODE when\case 當a=b時,返回c;當a=d時,返回e,否則返回f。
? distinct 去掉重復的
? desc/asc 升序/降序排列
邏輯函數 or 邏輯或
? and 邏輯和
not 邏輯非
多表join join 等值連接
left semi join 半連接
left right outer join 外連接
增加的hive函數   TO_DATE(v_txdate,'YYYYMMDD') 格式化所需要的日期
ADD_MONTHS(TO_DATE(v_txdate,0) 增加月數

LAST_DAY(v_dealyyyymm)
返回每個月最后一天
MONTHS_BETWEEN(v_dealyyyymm1,v_dealyyyymm2) 返回兩個日期之間的月數 
       
?:未證實      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM