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字段