Hive 简明教程
Hive - Built-in Operators
本章解释了 Hive 的内置运算符。Hive 中有四种类型的运算符:
-
Relational Operators
-
Arithmetic Operators
-
Logical Operators
-
Complex Operators
Relational Operators
这些运算符用于比较两个操作数。下表描述了 Hive 中可用的关系运算符:
Operator |
Operand |
Description |
A = B |
all primitive types |
如果表达式 A 等效于表达式 B,则为 TRUE,否则为 FALSE。 |
A != B |
all primitive types |
如果表达式 A 不等效于表达式 B,则为 TRUE,否则为 FALSE。 |
A < B |
all primitive types |
如果表达式 A 小于表达式 B,则为 TRUE,否则为 FALSE。 |
A ⇐ B |
all primitive types |
如果表达式 A 小于或等于表达式 B,则为 TRUE,否则为 FALSE。 |
A > B |
all primitive types |
如果表达式 A 大于表达式 B,则为 TRUE,否则为 FALSE。 |
A >= B |
all primitive types |
如果表达式 A 大于或等于表达式 B,则为 TRUE,否则为 FALSE。 |
A IS NULL |
all types |
如果表达式 A 求值为 NULL,则为 TRUE,否则为 FALSE。 |
A IS NOT NULL |
all types |
如果表达式 A 求值为 NULL,则为 FALSE,否则为 TRUE。 |
A LIKE B |
Strings |
如果字符串模式 A 与 B 匹配,则为 TRUE,否则为 FALSE。 |
A RLIKE B |
Strings |
如果 A 或 B 为 NULL,则为 NULL,如果 A 的任何子串与 Java 正则表达式 B 匹配,则为 TRUE,否则为 FALSE。 |
A REGEXP B |
Strings |
Same as RLIKE. |
Example
让我们假设 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 |
+-----+------------+--------+----------------------------+------+
Arithmetic Operators
这些运算符支持操作数上的各种常见算术运算。它们都返回数字类型。下表描述了 Hive 中可用的算术运算符:
Operators |
Operand |
Description |
A + B |
all number types |
给出 A 和 B 相加的结果。 |
A - B |
all number types |
给出从 A 中减去 B 的结果。 |
A * B |
all number types |
给出 A 和 B 相乘的结果。 |
A / B |
all number types |
给出 B 从 A 中除的结果。 |
A % B |
all number types |
给出 A 除以 B 的余数。 |
A & B |
all number types |
给出 A 和 B 按位与的结果。 |
A |
B |
all number types |
给出 A 和 B 按位或的结果。 |
A ^ B |
all number types |
给出 A 和 B 按位异或的结果。 |
~A |
all number types |
Logical Operators
运算符是逻辑表达式。它们都返回 TRUE 或 FALSE。
Operators |
Operands |
Description |
A AND B |
boolean |
如果 A 和 B 都为 TRUE,则为 TRUE,否则为 FALSE。 |
A && B |
boolean |
与 A AND B 相同。 |
A OR B |
boolean |
如果 A 或 B 或两者都为 TRUE,则为 TRUE,否则为 FALSE。 |
A |
B |
|
boolean |
与 A OR B 相同。 |
NOT A |
boolean |
如果 A 为 FALSE,则为 TRUE,否则为 FALSE。 |
!A |
Example
以下查询用于检索部门为 TP 且薪水大于 40000 卢比的员工详细信息。
hive> SELECT * FROM employee WHERE Salary>40000 && Dept=TP;
在成功执行查询后,您可以看到以下响应:
+------+--------------+-------------+-------------------+--------+
| ID | Name | Salary | Designation | Dept |
+------+--------------+-------------+-------------------+--------+
|1201 | Gopal | 45000 | Technical manager | TP |
+------+--------------+-------------+-------------------+--------+