Hive内置的常见算术运算符和逻辑运算符

在我们日常地使用中,我们经常会使用 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
    4
    hive (temp)> select 4 & 8;
    0
    hive (temp)> select 4 & 6;
    4
  • 位或操作

    语法:A | B

    说明:返回 A 和 B 按位进行或操作的结果

    1
    2
    hive (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