提示
Hive SQL 教程 欢迎使用。提供建议、纠错、催更等加作者微信: gairuo123(备注:sql )和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
本文介绍一些 Hive SQL 的内置操作和一些相关操作和运算。
例子 |
操作 |
功能说明 |
---|---|---|
-A |
unary(+), unary(-), unary(~) |
一元前缀运算符 |
A & B | bitwise and(&) | 按位和 |
A * B | star(*), divide(/), mod(%), div(DIV) | 乘法运算符 |
A + B | plus(+), minus(-) |
加法运算符 |
A ^ B |
bitwise xor(^) |
按位异或 |
A IS [NOT] (NULL|TRUE|FALSE) | IS NULL,IS NOT NULL, ... | 一元后缀 |
A | B | bitwise or(|) | 按位或 |
A || B | string concatenate(||) | 字符串连接 |
A[B] , A.identifier | bracket_op([]), dot(.) | 元素选择器,点 |
以下运算符比较传递的操作数,并根据操作数之间的比较是否成立来生成TRUE或FALSE值。
操作 |
操作数类型 |
说明 |
---|---|---|
A = B |
All primitive types |
如果表达式A等于表达式B,则为TRUE,否则为FALSE。 |
A == B | All primitive types | = 运算符的同义词。 |
A <=> B |
All primitive types |
对于非空操作数,使用EQUAL(=)运算符返回相同的结果,但如果两个均为NULL,则返回TRUE,如果其中之一为NULL,则返回FALSE。(As of version 0.9.0.) |
A <> B |
All primitive types |
NULL if A or B is NULL, TRUE if expression A is NOT equal to expression B, otherwise FALSE. |
A != B |
All primitive types |
相当于 <> 不等于操作 |
A < B |
All primitive types |
如果A或B为 NULL,则为 NULL;如果表达式A小于表达式B,则为 TRUE;否则为 FALSE |
A <= B |
All primitive types |
如果A或B为NULL,则为NULL;如果表达式A小于或等于表达式B,则为TRUE;否则为FALSE |
A > B |
All primitive types |
如果A或B为NULL,则为NULL;如果表达式A大于表达式B,则为TRUE;否则为FALSE |
A >= B |
All primitive types |
如果A或B为NULL,则为NULL;如果表达式A大于或等于表达式B,则为TRUE;否则为FALSE |
A [NOT] BETWEEN B AND C |
All primitive types |
如果A、B或C为空,则为空;如果A大于或等于B且A小于或等于C,则为真;否则为假。这可以通过使用NOT关键字来反转 (始于版本 0.9.0.) |
A IS NULL |
All types |
如果表达式A的计算结果为NULL,则为TRUE,否则为FALSE |
A IS NOT NULL |
All types |
如果表达式A的计算结果为NULL,则为FALSE,否则为TRUE |
A IS [NOT] (TRUE|FALSE) | Boolean types |
仅当满足条件时才计算为TRUE. (始于 3.0.0 ) 注意:NULL是未知的,因此(UNKNOWN是TRUE)和(UNKNOWN是FALSE)都计算为FALSE。 |
A [NOT] LIKE B |
strings |
如果A或B为NULL,则为NULL;如果字符串A与SQL简单正则表达式B匹配,则为TRUE;否则为FALSE。比较是逐字进行的。 B中的 _ 字符与A中的任何字符匹配 (类似点 . 在posix正则表达式中),而B中的%字符与A中任意数量的字符相匹配 (类似于 .* 在 posix 正则表达式中)。如, 'foobar' like 'foo' 结果为 FALSE 而 'foobar' like 'foo_ _ _' 和 'foobar' like 'foo%' 相同等于 TRUE |
A RLIKE B |
strings |
如果A或B为NULL,则为NULL;如果A的任何子字符串(可能为空)与Java正则表达式B匹配,则为TRUE, 否则 FALSE。例如,“foobar”RLIKE“foo”的计算结果为TRUE, 'foobar' RLIKE '^f.*r$'. 的计算结果也是TRUE。 |
A REGEXP B |
strings |
与 RLIKE 相同 |
以下运算符支持对操作数的各种常见算术运算。 所有返回数字类型; 如果任何操作数为NULL,则结果也为 NULL。
操作 |
操作数类型 |
说明 |
---|---|---|
A + B |
All number types |
给出A和B相加的结果。结果的类型与操作数类型的公共父级(在类型层次结构中)相同。例如,因为每个整数都是一个浮点,所以float是一个包含类型的整数,所以float上的+运算符和int将产生一个浮点 |
A - B |
All number types |
给出从A中减去B的结果。结果的类型与操作数类型的公共父级(在类型层次结构中)相同 |
A * B |
All number types |
给出A和B相乘的结果。结果的类型与操作数类型的公共父级(在类型层次结构中)相同。请注意,如果乘法导致溢出,则必须将其中一个运算符强制转换为类型层次结构中较高的类型 |
A / B |
All number types |
给出A除以B的结果。在大多数情况下,结果是双精度类型。当A和B都是整数时,结果是一个双精度类型,但当 hive.compat 配置参数设置为“0.13”或“最新”,在这种情况下,结果为十进制类型 |
A DIV B | Integer types | 给出A除以B所得的整数部分。例如 17 div 3 结果为5 |
A % B |
All number types |
给出A除以B的结果提示。结果类型与操作数类型的公共父级(在类型层次结构中)相同 |
A & B |
All number types |
给出A和B的按位AND的结果。结果的类型与操作数类型的公共父级(在类型层次结构中)相同 |
A | B |
All number types |
给出按位或A和B的结果。结果的类型与操作数类型的公共父级(在类型层次结构中)相同 |
A ^ B |
All number types |
给出A和B的按位异或结果。结果的类型与操作数类型的公共父级(在类型层次结构中)相同 |
~A |
All number types |
给出按位而非A的结果。结果的类型与A的类型相同 |
以下运算符为创建逻辑表达式提供支持。 它们都根据操作数的布尔值返回布尔值TRUE,FALSE或NULL。 NULL表现为“未知”标志,因此,如果结果取决于未知状态,则结果本身是未知的。
操作 |
操作数类型 |
说明 |
---|---|---|
A AND B |
boolean |
如果A和B都为真,则为真,否则为假。如果A或B为空,则为空 |
A OR B |
boolean |
如果A或B或两者都为真,则为真;如果为假,则为空;否则为假 |
NOT A |
boolean |
如果A为FALSE,则为TRUE;如果A为NULL,则为NULL。否则就 FALSE. |
! A |
boolean |
同 NOT A |
A IN (val1, val2, ...) |
boolean |
如果A等于任何值,则为TRUE。从配置单元0.13开始,语句中支持子查询。subqueries |
A NOT IN (val1, val2, ...) |
boolean |
如果A不等于任何值,则为TRUE。从配置单元0.13开始,NOT in语句支持子查询。 subqueries. |
[NOT] EXISTS (subquery) |
|
如果子查询返回至少一行,则为TRUE。始于 Hive 0.13. |
操作 |
操作数类型 |
操作数类型 |
---|---|---|
A || B |
strings |
连接操作数, |
以下函数构造复杂类型的实例。
操作数类型 |
操作数类型 |
说明 |
---|---|---|
map |
(key1, value1, key2, value2, ...) |
使用给定的键/值对创建映射 |
struct |
(val1, val2, val3, ...) |
使用给定的字段值创建结构。结构字段名将为 col1, col2, .... |
named_struct |
(name1, val1, name2, val2, ...) |
使用给定的字段名和值创建结构 (始于 0.8.0.) |
array |
(val1, val2, ...) |
使用给定元素创建数组 |
create_union |
(tag, val1, val2, ...) |
使用标记参数指向的值创建联合类型 |
以下运算符提供了访问复杂类型的元素的机制。
操作 |
操作数类型 |
说明 |
---|---|---|
A[n] |
A is an Array and n is an int |
返回数组A中的第n个元素。第一个元素的索引为0。如,如果A是由以下各项组成的数组: ['foo', 'bar'] 然后 A[0] 返回 'foo' 而 A[1] 返回 'bar'. |
M[key] |
M is a Map<K, V> and key has type K |
返回与映射中的键对应的值。 如,如果 M 由以下内容构成 {'f' -> 'foo', 'b' -> 'bar', 'all' -> 'foobar'} 然后 M['all'] 返回 'foobar'. |
S.x |
S is a struct |
返回 S 的 x 字段。例如,结构 foobar {int foo,int bar},foobar.foo 返回存储在结构的 foo 字段中的整数 |
更新时间:2022-03-15 20:46:12 标签:hql 操作 sql