当前位置:   article > 正文

Hive操作运算符

Hive操作运算符

关系操作符

以下操作符比较操作数(operands)从而产生TRUE/FALSE值.
  • 1
运算符操作数描述
A = B所有基本类型如果表达A等于表达B,结果TRUE,否则FALSE.
A != B所有基本类型如果A不等于表达式B表达返回TRUE,否则FALSE.如果有值为NULL,不会返回结果
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;关系型数据库中的like功能.
A RLIKE B字符串如果A任何子字符串匹配Java正则表达式B;否则FALSE.
A REGEXP B字符串等同于RLIKE.
Like的运用场合主要在模糊查询的时候,一般以查询字符串居多,这里据一些例子来说他的一般用法:

-- 查询name字段中包含有 "明" 字的:
select * from table1 where name like '%明%';   --这里不能使用 * 来代替,一般在使用0个或者任意个字符构成的字符串的时候最好使用 % 

--只在首或尾 % 和 * 两者都可以使用:
select * from table1 where name like '%明';
select * from table1 where name like '*明';

--如果在头尾同时使用的话,就必须要使用% :
select * from table1 where name like '%[a-z]%';

--查询name字段中含有数字的:
select * from table1 where name like '%[0-9]%'; 

--查询name字段中含有小写字母的:
select * from table1 where name like '%[a-z]%';

--查询name字段中不含有数字的:
select * from table1 where name like '%[!0-9]%';

:'
实际生产中遇到的问题:
为了找出日志表中 sqltext字段所有 insert overwrite的语句
刚开始是这样写的:select * from table1 where sqltext like '%insert overwrite%';
后来发现,如果有人手抖在 insert overwrite两个单词间敲了n个空格不是就把这条日志错过了吗?
所以换成了下面的写法(但是这种效率会低)
'
select * from table1 where sqltext like '%insert%overwrite%';

--补充一点: ?或者_表示单个字符
select * from table1 where name like '_gz'/'?gz';
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

算数运算符

这些运算符支持的操作数各种常见的算术运算,所有这些返回数字类型.
下表描述了在Hive中可用的算术运算符:
  • 1
  • 2
运算符操作描述
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按位非的结果

逻辑运算符

运算符是逻辑表达式; 所有这些返回TRUE或FALSE.
  • 1
运算符操作描述
A AND BbooleanTRUE,如果A和B都是TRUE,否则FALSE.
A && Bboolean类似于 A AND B.
A OR BbooleanTRUE,如果A或B或两者都是TRUE,否则FALSE.
NOT AbooleanTRUE,如果A是FALSE;否则FALSE.
!Aboolean类似于 NOT A.

复杂运算符

这些运算符提供一个表达式来接入复杂类型的元素.
  • 1
运算符操作描述
A[n]A是一个数组,n是一个int它返回数组A的第n个元素,第一个元素的索引0.
M[key]M 是一个 Map<K,V> 并 key 的类型为K它返回对应于映射中关键字的值.
S.xS 是一个结构体它返回S的x字段
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/962643
推荐阅读
相关标签
  

闽ICP备14008679号