Hive內置運算符
本章介紹Hive的內置運算符。在Hive有四種類型的運算符:
- 關係運算符
- 算術運算符
- 邏輯運算符
- 複雜運算符
關係運算符
這些操作符被用來比較兩個操作數。下表描述了在Hive中可用的關係運算符:
運算符
操作
描述
A = B
所有基本類型
如果表達A等於表達B,結果TRUE ,否則FALSE。
A != B
所有基本類型
如果A不等於表達式B表達返回TRUE ,否則FALSE。
A < B
所有基本類型
TRUE,如果表達式A小於表達式B,否則FALSE。
A <= B
所有基本類型
TRUE,如果表達式A小於或等於表達式B,否則FALSE。
A > B
所有基本類型
TRUE,如果表達式A大於表達式B,否則FALSE。
A >= B
所有基本類型
TRUE,如果表達式A大於或等於表達式B,否則FALSE。
A IS NULL
所有類型
TRUE,如果表達式的計算結果爲NULL,否則FALSE。
A IS NOT NULL
所有類型
FALSE,如果表達式A的計算結果爲NULL,否則TRUE。
A LIKE B
字符串
TRUE,如果字符串模式A匹配到B,否則FALSE。
A RLIKE B
字符串
NULL,如果A或B爲NULL;TRUE,如果A任何子字符串匹配Java正則表達式B;否則FALSE。
A REGEXP B
字符串
等同於RLIKE.
示例
讓我們假設employee表由字段:Id, Name, Salary, Designation, 和Dept組成,如下圖所示。生成一個查詢檢索員工詳細信息 - ID爲1205。
+-----+--------------+--------+---------------------------+------+
| Id | Name | Salary | Designation | Dept |
+-----+--------------+------------------------------------+------+
|1201 | Gopal | 45000 | Technical manager | TP |
|1202 | Manisha | 45000 | Proofreader | PR |
|1203 | Masthanvali | 40000 | Technical writer | TP |
|1204 | Krian | 40000 | Hr Admin | HR |
|1205 | Kranthi | 30000 | Op Admin | Admin|
+-----+--------------+--------+---------------------------+------+
以下查詢執行檢索使用上述表中的僱員的詳細信息:
hive> SELECT * FROM employee WHERE Id=1205;
成功執行的查詢,能看到以下回應:
+-----+-----------+-----------+----------------------------------+
| ID | Name | Salary | Designation | Dept |
+-----+---------------+-------+----------------------------------+
|1205 | Kranthi | 30000 | Op Admin | Admin |
+-----+-----------+-----------+----------------------------------+
下面的查詢執行以檢索薪水大於或等於40000盧比的僱員的詳細信息。
hive> SELECT * FROM employee WHERE Salary>=40000;
成功執行的查詢,能看到以下回應:
+-----+------------+--------+----------------------------+------+
| ID | Name | Salary | Designation | Dept |
+-----+------------+--------+----------------------------+------+
|1201 | Gopal | 45000 | Technical manager | TP |
|1202 | Manisha | 45000 | Proofreader | PR |
|1203 | Masthanvali| 40000 | Technical writer | TP |
|1204 | Krian | 40000 | Hr Admin | HR |
+-----+------------+--------+----------------------------+------+
算術運算符
這些運算符支持的操作數各種常見的算術運算。所有這些返回數字類型。下表描述了在Hive中可用的算術運算符:
運算符
操作
描述
A + B
所有數字類型
A加B的結果
A - B
所有數字類型
A減去B的結果
A * B
所有數字類型
A乘以B的結果
A / B
所有數字類型
A除以B的結果
A % B
所有數字類型
A除以B.產生的餘數
A & B
所有數字類型
A和B的按位與結果
A | B
所有數字類型
A和B的按位或結果
A ^ B
所有數字類型
A和B的按位異或結果
~A
所有數字類型
A按位非的結果
示例
下面的查詢相加兩個數字,20和30。
hive> SELECT 20+30 ADD FROM temp;
在成功執行查詢後,能看到以下回應:
+--------+
| ADD |
+--------+
| 50 |
+--------+
邏輯運算符
運算符是邏輯表達式。所有這些返回TRUE或FALSE。
運算符
操作
描述
A AND B
boolean
TRUE,如果A和B都是TRUE,否則FALSE。
A && B
boolean
類似於 A AND B.
A OR B
boolean
TRUE,如果A或B或兩者都是TRUE,否則FALSE。
A || B
boolean
類似於 A OR B.
NOT A
boolean
TRUE,如果A是FALSE,否則FALSE。
!A
boolean
類似於 NOT A.
示例
下面的查詢用於檢索部門是TP並且工資超過40000盧比的員工詳細信息。
hive> SELECT * FROM employee WHERE Salary>40000 && Dept=TP;
成功執行查詢後,能看到以下回應:
+------+--------------+-------------+-------------------+--------+
| ID | Name | Salary | Designation | Dept |
+------+--------------+-------------+-------------------+--------+
|1201 | Gopal | 45000 | Technical manager | TP |
+------+--------------+-------------+-------------------+--------+
複雜的運算符
這些運算符提供一個表達式來接入複雜類型的元素。
運算符
操作
描述
A[n]
A是一個數組,n是一個int
它返回數組A的第n個元素,第一個元素的索引0。
M[key]
M 是一個 Map<K, V> 並 key 的類型爲K
它返回對應於映射中關鍵字的值。
S.x
S 是一個結構
它返回S的s字段