HIVE 常見的內建函式
文章目錄
-
1 關係運算
-
1.1 1、等值比較: =
-
1.2 2、不等值比較:
-
1.3 3、小於比較: <
-
1.4 4、小於等於比較: <=
-
1.5 5、大於比較: >
-
1.6 6、大於等於比較: >=
-
1.7 7、空值判斷: IS NULL
-
1.8 8、非空判斷: IS NOT NULL
-
1.9 9、LIKE比較: LIKE
-
1.10 10、JAVA的LIKE操作: RLIKE
-
1.11 11、REGEXP操作: REGEXP
-
-
2 數學運算:
-
2.1 1、加法操作: +
-
2.2 2、減法操作: -
-
2.3 3、乘法操作: *
-
2.4 4、除法操作: /
-
2.5 5、取餘操作: %
-
2.6 6、位與操作: &
-
2.7 7、位或操作: |
-
2.8 8、位異或操作: ^
-
2.9 9.位取反操作: ~
-
-
3 邏輯運算:
-
3.1 1、邏輯與操作: AND
-
3.2 2、邏輯或操作: OR
-
3.3 3、邏輯非操作: NOT
-
-
4 數值計算
-
4.1 1、取整函式: round
-
4.2 2、指定精度取整函式: round
-
4.3 3、向下取整函式: floor
-
4.4 4、向上取整函式: ceil
-
4.5 5、向上取整函式: ceiling
-
4.6 6、取隨機數函式: rand
-
4.7 7、自然指數函式: exp
-
4.8 8、以10為底對數函式: log10
-
4.9 9、以2為底對數函式: log2
-
4.10 10、對數函式: log
-
4.11 11、冪運算函式: pow
-
4.12 12、冪運算函式: power
-
4.13 13、開平方函式: sqrt
-
4.14 14、二進位制函式: bin
-
4.15 15、十六進位制函式: hex
-
4.16 16、反轉十六進位制函式: unhex
-
4.17 17、進位制轉換函式: conv
-
4.18 18、絕對值函式: abs
-
4.19 19、正取餘函式: pmod
-
4.20 20、正弦函式: sin
-
4.21 21、反正弦函式: asin
-
4.22 22、餘弦函式: cos
-
4.23 23、反餘弦函式: acos
-
4.24 24、positive函式: positive
-
4.25 25、negative函式: negative
-
-
5 日期函式
-
5.1 1、UNIX時間戳轉日期函式: from_unixtime
-
5.2 2、獲取當前UNIX時間戳函式: unix_timestamp
-
5.3 3、日期轉UNIX時間戳函式: unix_timestamp
-
5.4 4、指定格式日期轉UNIX時間戳函式: unix_timestamp
-
5.5 5、日期時間轉日期函式: to_date
-
5.6 6、日期轉年函式: year
-
5.7 7、日期轉月函式: month
-
5.8 8、日期轉天函式: day
-
5.9 9、日期轉小時函式: hour
-
5.10 10、日期轉分鐘函式: minute
-
5.11 11、日期轉秒函式: second
-
5.12 12、日期轉周函式: weekofyear
-
5.13 13、日期比較函式: datediff
-
5.14 14、日期增加函式: date_add
-
5.15 15、日期減少函式: date_sub
-
-
6 條件函式
-
6.1 1、If函式: if
-
6.2 2、非空查詢函式: COALESCE
-
6.3 3、條件判斷函式:CASE
-
6.4 4、條件判斷函式:CASE
-
-
7 字串函式
-
7.1 1、字串長度函式:length
-
7.2 2、字串反轉函式:reverse
-
7.3 3、字串連線函式:concat
-
7.4 4、帶分隔符字串連線函式:concat_ws
-
7.5 5、字串擷取函式:substr,substring
-
7.6 6、字串擷取函式:substr,substring
-
7.7 7、字串轉大寫函式:upper,ucase
-
7.8 8、字串轉小寫函式:lower,lcase
-
7.9 9、去空格函式:trim
-
7.10 10、左邊去空格函式:ltrim
-
7.11 11、右邊去空格函式:rtrim
-
7.12 12、正則表示式替換函式:regexp_replace
-
7.13 13、正則表示式解析函式:regexp_extract
-
7.14 14、URL解析函式:parse_url
-
7.15 15、json解析函式:get_json_object
-
7.16 16、空格字串函式:space
-
7.17 17、重複字串函式:repeat
-
7.18 18、首字元ascii函式:ascii
-
7.19 19、左補足函式:lpad
-
7.20 20、右補足函式:rpad
-
7.21 21、分割字串函式: split
-
7.22 22、集合查詢函式: find_in_set
-
-
8 集合統計函式
-
8.1 1、個數統計函式: count
-
8.2 2、總和統計函式: sum
-
8.3 3、平均值統計函式: avg
-
8.4 4、最小值統計函式: min
-
8.5 5、最大值統計函式: max
-
8.6 6、非空集合總體變數函式: var_pop
-
8.7 7、非空集合樣本變數函式: var_samp
-
8.8 8、總體標準偏離函式: stddev_pop
-
8.9 9、樣本標準偏離函式: stddev_samp
-
8.10 10.中位數函式: percentile
-
8.11 11、中位數函式: percentile
-
8.12 12、近似中位數函式: percentile_approx
-
8.13 13、近似中位數函式: percentile_approx
-
8.14 14、直方圖: histogram_numeric
-
-
9 複合型別構建操作
-
9.1 1、Map型別構建: map
-
9.2 2、Struct型別構建: struct
-
9.3 3、array型別構建: array
-
-
10 複雜型別訪問操作
-
10.1 1、array型別訪問: A[n]
-
10.2 2、map型別訪問: M[key]
-
10.3 3、struct型別訪問: S.x
-
-
11 複雜型別長度統計函式
-
11.1 1.Map型別長度函式: size(Map<k .V>)
-
11.2 2.array型別長度函式: size(Array<T>)
-
11.3 3.型別轉換函式
-
關係運算
1、等值比較: =
語法:A=B
操作型別:所有基本型別
描述: 如果表示式A與表示式B相等,則為TRUE;否則為FALSE
|
2、不等值比較: <>
語法: A <> B
操作型別: 所有基本型別
描述: 如果表示式A為NULL,或者表示式B為NULL,返回NULL;如果表示式A與表示式B不相等,則為TRUE;否則為FALSE
|
3、小於比較: <
語法: A < B
操作型別:所有基本型別
描述: 如果表示式A為NULL,或者表示式B為NULL,返回NULL;如果表示式A小於表示式B,則為TRUE;否則為FALSE
|
4、小於等於比較: <=
語法: A <= B
操作型別: 所有基本型別
描述: 如果表示式A為NULL,或者表示式B為NULL,返回NULL;如果表示式A小於或者等於表示式B,則為TRUE;否則為FALSE
|
5、大於比較: >
語法: A > B
操作型別: 所有基本型別
描述: 如果表示式A為NULL,或者表示式B為NULL,返回NULL;如果表示式A大於表示式B,則為TRUE;否則為FALSE
|
6、大於等於比較: >=
語法: A >= B
操作型別: 所有基本型別
描述: 如果表示式A為NULL,或者表示式B為NULL,返回NULL;如果表示式A大於或者等於表示式B,則為TRUE;否則為FALSE
|
注意:String的比較要注意(常用的時間比較可以先 to_date
之後再比較)
|
7、空值判斷: IS NULL
語法: A IS NULL
操作型別: 所有型別
描述: 如果表示式A的值為NULL,則為TRUE;否則為FALSE
|
8、非空判斷: IS NOT NULL
語法: A IS NOT NULL
操作型別: 所有型別
描述: 如果表示式A的值為NULL,則為FALSE;否則為TRUE
|
9、LIKE比較: LIKE
語法: A LIKE B
操作型別: strings
描述: 如果字串A或者字串B為NULL,則返回NULL;如果字串A符合表示式B 的正則語法,則為TRUE;否則為FALSE。B中字元”_”表示任意單個字元,而字元”%”表示任意數量的字元。
|
10、JAVA的LIKE操作: RLIKE
語法: A RLIKE B
操作型別: strings
描述: 如果字串A或者字串B為NULL,則返回NULL;如果字串A符合JAVA正則表示式B的正則語法,則為TRUE;否則為FALSE。
|
11、REGEXP操作: REGEXP
語法: A REGEXP B
操作型別: strings
描述: 功能與RLIKE相同
|
數學運算:
1、加法操作: +
語法: A + B
操作型別:所有數值型別
說明:返回A與B相加的結果。結果的數值型別等於A的型別和B的型別的最小父型別(詳見資料型別的繼承關係)。比如,int + int 一般結果為int型別,而 int + double 一般結果為double型別
|
2、減法操作: -
語法: A – B
操作型別:所有數值型別
說明:返回A與B相減的結果。結果的數值型別等於A的型別和B的型別的最小父型別(詳見資料型別的繼承關係)。比如,int – int 一般結果為int型別,而 int – double 一般結果為double型別
|
3、乘法操作: *
語法: A * B
操作型別:所有數值型別
說明:返回A與B相乘的結果。結果的數值型別等於A的型別和B的型別的最小父型別(詳見資料型別的繼承關係)。注意,如果A乘以B的結果超過預設結果型別的數值範圍,則需要通過cast將結果轉換成範圍更大的數值型別
|
4、除法操作: /
語法: A / B
操作型別:所有數值型別
說明:返回A除以B的結果。結果的數值型別為double
|
注意:hive中最高精度的資料型別是double,只精確到小數點後16位,在做除法運算的時候要特別注意
|
5、取餘操作: %
語法: A % B
操作型別:所有數值型別
說明:返回A除以B的餘數。結果的數值型別等於A的型別和B的型別的最小父型別(詳見資料型別的繼承關係)。
|
6、位與操作: &
語法: A & B
操作型別:所有數值型別
說明:返回A和B按位進行與操作的結果。結果的數值型別等於A的型別和B的型別的最小父型別(詳見資料型別的繼承關係)。
|
7、位或操作: |
語法: A | B
操作型別:所有數值型別
說明:返回A和B按位進行或操作的結果。結果的數值型別等於A的型別和B的型別的最小父型別(詳見資料型別的繼承關係)。
|
8、位異或操作: ^
語法: A ^ B
操作型別:所有數值型別
說明:返回A和B按位進行異或操作的結果。結果的數值型別等於A的型別和B的型別的最小父型別(詳見資料型別的繼承關係)。
|
9.位取反操作: ~
語法: ~A
操作型別:所有數值型別
說明:返回A按位取反操作的結果。結果的數值型別等於A的型別。
|
邏輯運算:
1、邏輯與操作: AND
語法: A AND B
操作型別:boolean
說明:如果A和B均為TRUE,則為TRUE;否則為FALSE。如果A為NULL或B為NULL,則為NULL
|
2、邏輯或操作: OR
語法: A OR B
操作型別:boolean
說明:如果A為TRUE,或者B為TRUE,或者A和B均為TRUE,則為TRUE;否則為FALSE
|
3、邏輯非操作: NOT
語法: NOT A
操作型別:boolean
說明:如果A為FALSE,或者A為NULL,則為TRUE;否則為FALSE
|
數值計算
1、取整函式: round
語法: round(double a)
返回值: BIGINT
說明: 返回double型別的整數值部分 (遵循四捨五入)
|
2、指定精度取整函式: round
語法: round(double a, int d)
返回值: DOUBLE
說明: 返回指定精度d的double型別
|
3、向下取整函式: floor
語法: floor(double a)
返回值: BIGINT
說明: 返回等於或者小於該double變數的最大的整數
|
4、向上取整函式: ceil
語法: ceil(double a)
返回值: BIGINT
說明: 返回等於或者大於該double變數的最小的整數
|
5、向上取整函式: ceiling
語法: ceiling(double a)
返回值: BIGINT
說明: 與ceil功能相同
|
6、取隨機數函式: rand
語法: rand(),rand(int seed)
返回值: double
說明: 返回一個0到1範圍內的隨機數。如果指定種子seed,則會等到一個穩定的隨機數序列
|
7、自然指數函式: exp
語法: exp(double a)
返回值: double
說明: 返回自然對數e的a次方
|
8、以10為底對數函式: log10
語法: log10(double a)
返回值: double
說明: 返回以10為底的a的對數
|
9、以2為底對數函式: log2
語法: log2(double a)
返回值: double
說明: 返回以2為底的a的對數
|
10、對數函式: log
語法: log(double base, double a)
返回值: double
說明: 返回以base為底的a的對數
|
11、冪運算函式: pow
語法: pow(double a, double p)
返回值: double
說明: 返回a的p次冪
|
12、冪運算函式: power
語法: power(double a, double p)
返回值: double
說明: 返回a的p次冪,與pow功能相同
|
13、開平方函式: sqrt
語法: sqrt(double a)
返回值: double
說明: 返回a的平方根
|
14、二進位制函式: bin
語法: bin(BIGINT a)
返回值: string
說明: 返回a的二進位制程式碼表示
|
15、十六進位制函式: hex
語法: hex(BIGINT a)
返回值: string
說明: 如果變數是int型別,那麼返回a的十六進位制表示;如果變數是string型別,則返回該字串的十六進位制表示
|
16、反轉十六進位制函式: unhex
語法: unhex(string a)
返回值: string
說明: 返回該十六進位制字串所程式碼的字串
|
17、進位制轉換函式: conv
語法: conv(BIGINT num, int from_base, int to_base)
返回值: string
說明: 將數值num從from_base進位制轉化到to_base進位制
|
18、絕對值函式: abs
語法: abs(double a) abs(int a)
返回值: double int
說明: 返回數值a的絕對值
|
19、正取餘函式: pmod
語法: pmod(int a, int b),pmod(double a, double b)
返回值: int double
說明: 返回正的a除以b的餘數
|
20、正弦函式: sin
語法: sin(double a)
返回值: double
說明: 返回a的正弦值
|
21、反正弦函式: asin
語法: asin(double a)
返回值: double
說明: 返回a的反正弦值
|
22、餘弦函式: cos
語法: cos(double a)
返回值: double
說明: 返回a的餘弦值
|
23、反餘弦函式: acos
語法: acos(double a)
返回值: double
說明: 返回a的反餘弦值
|
24、positive函式: positive
語法: positive(int a), positive(double a)
返回值: int double
說明: 返回a
|
25、negative函式: negative
語法: negative(int a), negative(double a)
返回值: int double
說明: 返回-a
|
日期函式
1、UNIX時間戳轉日期函式: from_unixtime
語法: from_unixtime(bigint unixtime[, string format])
返回值: string
說明: 轉化UNIX時間戳(從1970-01-01 00:00:00 UTC到指定時間的秒數)到當前時區的時間格式
|
2、獲取當前UNIX時間戳函式: unix_timestamp
語法: unix_timestamp()
返回值: bigint
說明: 獲得當前時區的UNIX時間戳
|
3、日期轉UNIX時間戳函式: unix_timestamp
語法: unix_timestamp(string date)
返回值: bigint
說明: 轉換格式為"yyyy-MM-dd HH:mm:ss"的日期到UNIX時間戳。如果轉化失敗,則返回0。
|
4、指定格式日期轉UNIX時間戳函式: unix_timestamp
語法: unix_timestamp(string date, string pattern)
返回值: bigint
說明: 轉換pattern格式的日期到UNIX時間戳。如果轉化失敗,則返回0。
|
5、日期時間轉日期函式: to_date
語法: to_date(string timestamp)
返回值: string
說明: 返回日期時間欄位中的日期部分。
|
6、日期轉年函式: year
語法: year(string date)
返回值: int
說明: 返回日期中的年。
|
7、日期轉月函式: month
語法: month (string date)
返回值: int
說明: 返回日期中的月份。
|
8、日期轉天函式: day
語法: day (string date)
返回值: int
說明: 返回日期中的天。
|
9、日期轉小時函式: hour
語法: hour (string date)
返回值: int
說明: 返回日期中的小時。
|
10、日期轉分鐘函式: minute
語法: minute (string date)
返回值: int
說明: 返回日期中的分鐘。
|
11、日期轉秒函式: second
語法: second (string date)
返回值: int
說明: 返回日期中的秒。
|
12、日期轉周函式: weekofyear
語法: weekofyear (string date)
返回值: int
說明: 返回日期在當前的週數。
|
13、日期比較函式: datediff
語法: datediff(string enddate, string startdate)
返回值: int
說明: 返回結束日期減去開始日期的天數。
|
14、日期增加函式: date_add
語法: date_add(string startdate, int days)
返回值: string
說明: 返回開始日期startdate增加days天后的日期。
|
15、日期減少函式: date_sub
語法: date_sub (string startdate, int days)
返回值: string
說明: 返回開始日期startdate減少days天后的日期。
|
條件函式
1、If函式: if
語法: if(boolean testCondition, T valueTrue, T valueFalseOrNull)
返回值: T
說明: 當條件testCondition為TRUE時,返回valueTrue;否則返回valueFalseOrNull
|
2、非空查詢函式: COALESCE
語法: COALESCE(T v1, T v2, …)
返回值: T
說明: 返回引數中的第一個非空值;如果所有值都為NULL,那麼返回NULL
|
3、條件判斷函式:CASE
語法: CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
返回值: T
說明:如果a等於b,那麼返回c;如果a等於d,那麼返回e;否則返回f
|
4、條件判斷函式:CASE
語法: CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END
返回值: T
說明:如果a為TRUE,則返回b;如果c為TRUE,則返回d;否則返回e
|
字串函式
1、字串長度函式:length
語法: length(string A)
返回值: int
說明:返回字串A的長度
|
2、字串反轉函式:reverse
語法: reverse(string A)
返回值: string
說明:返回字串A的反轉結果
|
3、字串連線函式:concat
語法: concat(string A, string B…)
返回值: string
說明:返回輸入字串連線後的結果,支援任意個輸入字串
|
4、帶分隔符字串連線函式:concat_ws
語法: concat_ws(string SEP, string A, string B…)
返回值: string
說明:返回輸入字串連線後的結果,SEP表示各個字串間的分隔符
|
5、字串擷取函式:substr,substring
語法: substr(string A, int start),substring(string A, int start)
返回值: string
說明:返回字串A從start位置到結尾的字串
|
6、字串擷取函式:substr,substring
語法: substr(string A, int start, int len),substring(string A, int start, int len)
返回值: string
說明:返回字串A從start位置開始,長度為len的字串
|
7、字串轉大寫函式:upper,ucase
語法: upper(string A) ucase(string A)
返回值: string
說明:返回字串A的大寫格式
|
8、字串轉小寫函式:lower,lcase
語法: lower(string A) lcase(string A)
返回值: string
說明:返回字串A的小寫格式
|
9、去空格函式:trim
語法: trim(string A)
返回值: string
說明:去除字串兩邊的空格
|
10、左邊去空格函式:ltrim
語法: ltrim(string A)
返回值: string
說明:去除字串左邊的空格
|
11、右邊去空格函式:rtrim
語法: rtrim(string A)
返回值: string
說明:去除字串右邊的空格
|
12、正則表示式替換函式:regexp_replace
語法: regexp_replace(string A, string B, string C)
返回值: string
說明:將字串A中的符合java正則表示式B的部分替換為C。注意,在有些情況下要使用轉義字元,類似oracle中的regexp_replace函式。
|
13、正則表示式解析函式:regexp_extract
語法: regexp_extract(string subject, string pattern, int index)
返回值: string
說明:將字串subject按照pattern正則表示式的規則拆分,返回index指定的字元。
|
14、URL解析函式:parse_url
語法: parse_url(string urlString, string partToExtract [, string keyToExtract])
返回值: string
說明:返回URL中指定的部分。partToExtract的有效值為:HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO.
|