函數分類 | 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) | 返回兩個日期之間的月數 | ||
?:未證實 |