在我们日常地使用中,我们经常会使用 hive 进行各种运算操作,其实这之中发生了很多 hive 数据类型之前的转换操作,比如 string + int 。今天我们来大概看一看,以便踩坑的时候可以更快地出坑。
基本知识
可以先看看后面这篇文章:Hive内置数据类型
假如我们需要对两个不同数据类型的数字进行比较,一个是 int,一个是 smallint,那么在比较的时候,都会被隐式转化为 int 类型再进行比较。不顾我们不可以隐式地将一个 int 类型的数据转化成一个 smallint 类型的数据,除非使用 cast 。
任何整数类型都可以隐式转换成一个范围更大的类型。任意 int 类型、float、string 都可以隐式转换成 double 类型!boolean不可以转化为其他任意类型。
具体操作
算术运算符
无特殊说明,则默认返回是变量的最小父类型
等值比较
语法:A = B
说明:如果表达式 A 和表达式 B 相等,则为 True ,否则为 False
加法操作
语法: A + B
说明:返回 A+B 相加的结果。结果的数值类型等于 A 的类型和 B 的类型的最小父类型。比如 int + int 结果为 int 类型,int + double 为 double 类型
减法操作
语法:A - B
说明:同加法操作
乘法操作
语法: A * B
说明:同样是返回 A 与 B 的最小父类型,不过如果结果超过默认的结果类型的数值范围,为需要通过 cast 将结果转换成范围更大的数值类型
除法操作
语法: A / B
说明:返回 A 除以 B 的结果。结果的数值为 double 类型。Hive中最高精度的数据类型是 double ,只精确到小数点后面16位
取余操作
语法: A % B
说明:pass
位与操作
语法: A & B
说明:返回 A 和 B 按位进行与操作的结果
1
2
3
4hive (temp)> select 4 & 8;
0
hive (temp)> select 4 & 6;
4位或操作
语法:A | B
说明:返回 A 和 B 按位进行或操作的结果
1
2hive (temp)> select 4 | 6;
6位异或操作
语法:A ^ B
说明:返回 A 和 B 按位进行异或操作的结果
位取反操作
语法:~A
说明:返回 A 按位取反操作的结果,结果的数值类型等于 A 的类型
逻辑运算符
逻辑与操作
语法:A and B 或者 A && B
操作类型: boolean
说明: pass
逻辑或操作
语法:A or B 或者 A || B
操作类型:boolean
说明:pass
逻辑非操作
语法:not A 或者 !A
操作类型:boolean
说明:pass