hive 内置操作符

 Hive的内置操作符与很多编程语言中的操作符相似,可以分为关系操作符、算术操作符、逻辑操作符和复合类型操作符,下面进行一一学习。


关系操作符

        关系操作符比较操作数并产生TRUE或者FALSE,需要注意的是Hive的相等比较为=,而不是= =。

操作符

类型

描述

A = B

数值类型

如果AB相等则返回TRUE,否则返回FALSE

A <=> B

数值类型

对于非NULL操作数,结果与=相同,如果都是NULL则返回TRUE,如果其中之一是NULL,返回FALSE

A <> B

数值类型

ABNULL,返回NULL。若AB不相等,返回TRUE,否则为FALSE

A != B

数值类型

<> 操作符

A < B

数值类型

ABNULL,返回NULLA小于B返回TRUE,否则返回FALSE

A <= B

数值类型

ABNULL,返回NULLA小于等于B返回TRUE,否则返回FALSE

A > B

数值类型

ABNULL,返回NULLA大于B返回TRUE,否则返回FALSE

A >= B

数值类型

ABNULL,返回NULLA大于等于B返回TRUE,否则返回FALSE

A [NOT] BETWEEN B AND C

数值类型

AB,或CNULL,返回NULL。如果A大于等于B且小于等于C,返回TRUE,否则为FALSE

A IS NULL

数值类型

ANULL,返回TRUE,否则为FALSE

A IS NOT NULL

数值类型

ANULL,返回FALSE,否则为TRUE

A [NOT] LIKE B

字符串

ABNULL,返回NULL。若字符串A匹配SQL正则表达式B,返回TRUE,否则FALSEB中的_字符匹配A中的任何字符,%字符匹配A中任意数量的字符,例如'foobar' like 'foo' 得到FALSE 'foobar' like 'foo_ _ _'得到TRUE'foobar' like 'foo%'也为TRUE

A RLIKE B

字符串

ABNULL,返回NULL。如果A中的任何子串(可能是空字串)匹配Java正则表达式B,返回TRUE,否则为FALSE。例如 'foobar' RLIKE 'foo' 结果为TRUE 'foobar' RLIKE '^f.*r$'也为TRUE

A REGEXP B

字符串

RLIKE



算术操作符

        下表中的操作符支持各种常用的算术操作,返回值都为数值类型,如果任意的操作数为NULL,结果也为NULL。

操作符

类型

描述

A + B

数值类型

返回A加B的结果。结果类型为两个操作数中最高层级的类型,比如一个操作数为int,另一个为float,则结果类型为float。

A - B

数值类型

返回A减B的结果。

A * B

数值类型

返回A乘B的结果。如果相乘引起溢出,必须将低层级的类型转换为高层级的类型。

A / B

数值类型

返回A除以B的结果,结果类型为double。

A % B

数值类型

返回A除以B的余数,结果类型为两个操作数中最高层级的类型。

A & B

数值类型

返回A和B按位与的结果,结果类型为两个操作数中最高层级的类。

A | B

数值类型

返回A和B按位或的结果,结果类型为两个操作数中最高层级的类。

A ^ B

数值类型

返回A和B按位异或的结果,结果类型为两个操作数中最高层级的类。

~A

数值类型

返回A按位非的结果,结果类型与A一致。



逻辑操作符

        下表中的操作符用于逻辑表达式,返回值为TRUE,FALSE或NULL。

操作符

类型

描述

A AND B

boolean

AB都为true,结果为true,否则false,若ABNULL,结果为NULL

 

A && B

boolean

A AND B

 

A OR B

boolean

AB或两者都为true,结果为trueFALSE OR NULL 结果为false,否则为falseAB都为false)。

 

A || B

boolean

A OR B

 

NOT A

boolean

Afalse,结果为true,若ANULL,结果为NULL,否则为false

 

! A

boolean

 NOT A

 

A IN (val1, val2, ...)

boolean

A与任意值相等则返回true

 

A NOT IN (val1, val2, ...)

boolean

A与任何值都不相等则返回true

 

[NOT] EXISTS (subquery)

 boolean

若子查询返回至少一行数据则返回true

 



复合类型操作符

        在学习用于复合类型的操作符之前,先学习一下复合类型的构造方法。

构造方法

操作数

描述

map

(key1, value1, key2, value2, ...)

使用key/value对创建map

struct

(val1, val2, val3, ...)

使用给定的字段值创建struct,字段名称为 col1, col2, ...

named_struct

(name1, val1, name2, val2, ...)

使用给定的字段名称和值创建struct

array

(val1, val2, ...)

使用给定的值创建数组。

create_union

(tag, val1, val2, ...)

使用tag指向的值创建union类型。

        用于复合类型的操作数如下所示:

操作符

操作数类型

描述

A[n]

是数组,n的类型为int

返回A中的第n个元素,第一个元素的索引为0

M[key]

M是个map

返回Mkey对应的值。

S.x

Sstruct

返回Sx字段。例如,对于struct foobar {int foo, int bar} foobar.foo 返回存在于foo字段的整数值。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值