赞
踩
以下操作符比较操作数(operands)从而产生TRUE/FALSE值.
运算符 | 操作数 | 描述 |
---|---|---|
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';
这些运算符支持的操作数各种常见的算术运算,所有这些返回数字类型.
下表描述了在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 | 所有数字类型 | A按位非的结果 |
运算符是逻辑表达式; 所有这些返回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. |
NOT A | boolean | TRUE,如果A是FALSE;否则FALSE. |
!A | boolean | 类似于 NOT A. |
这些运算符提供一个表达式来接入复杂类型的元素.
运算符 | 操作 | 描述 |
---|---|---|
A[n] | A是一个数组,n是一个int | 它返回数组A的第n个元素,第一个元素的索引0. |
M[key] | M 是一个 Map<K,V> 并 key 的类型为K | 它返回对应于映射中关键字的值. |
S.x | S 是一个结构体 | 它返回S的x字段 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。