【大数据Hive】hive 运算符使用详解

目录

一、前言

二、hive 运算符分类

三、hive 运算符操作演示

3.1  数据准备

创建表dual

加载一个文件dual.txt到dual表中

模拟测试

3.2  关系运算符

is null空值判断

 is not null 非空值判断

like使用

3.3  算术运算符

取整操作

取余操作: %  

位与操作: &

位或操作: |

位异或操作: ^

3.4  逻辑运算符

与操作: A AND B 

或操作: A OR B  

非操作: NOT A 、!A  

 在:A IN (val1, val2, ...)

不在:A NOT IN (val1, val2, ...)

逻辑是否存在: [NOT] EXISTS (subquery)

3.5  其他运算符


一、前言

在很多编程语言中都需要运算符去完成一些常规的或复杂的算数运算、逻辑运算等,比如mysql,java,nginx的shell等等,运算符的使用可以让程序和业务变得简单,具备更好的灵活性,本篇将详细介绍下hive中的运算符的使用。

二、hive 运算符分类

Hive支持的运算符可以分为三大类:

  • 关系运算符;
  • 算术运算符;
  • 逻辑运算符;

官方参考文档:官方运算符地址 ,或者使用下面的命令查看hive系统的相关运算符或函数:

-- 1、显示所有的函数和运算符

show functions;

-- 2、查看运算符或者函数的使用说明

describe function count;

-- 3、使用extended 可以查看更加详细的使用说明

describe function extended count;

如下截取了当前版本下hive的部分运算符

三、hive 运算符操作演示

理论是枯燥的,下面通过实际操作来演示下各类运算符的详细使用吧;

3.1  数据准备

在Hive中创建一个空表dual,用于测试各种运算符的功能;

创建表dual

create table dual(id string);

加载一个文件dual.txt到dual表中

dual.txt只有一行内容:内容为一个空格

load data local inpath '/usr/local/soft/hivedata/dual.txt' into table dual;

执行上面的加载命令

模拟测试

select 1+1 from dual;

3.2  关系运算符

关系运算符属于hive的内置运算符,是二元运算符,执行的是两个操作数的比较运算,每个关系运算符都返回boolean类型结果(TRUE或FALSE);

以下是常规的关系运算符:

运算符含义表达式
等值比较= 、==
不等值比较<> 、!=
小于比较<
小于等于比较<=
大于比较>
大于等于比较>=
空值判断 IS NULL 
非空判断 IS NOT NULL
LIKE比较LIKE
JAVA的LIKE操作RLIKE
REGEXP操作REGEXP

is null空值判断

select 1 from dual where 'congge' is null;

 is not null 非空值判断

select 1 from dual where 'congge' is not null;

like使用

  • _表示任意单个字符
  • %表示任意数量字符;
  • 否定比较: NOT A like B;

like单个字符比较

select 1 from dual where 'congge' like 'co_';

可以看到这种情况下没有匹配到结果 

%任意数量字符匹配

select 1 from dual where 'congge' like 'co%';

这个有点像mysql中的like模糊匹配

like否定比较

select 'abcde' like 'abc';
select not 'abcde' like 'abc';

rlike

确定字符串是否匹配正则表达式,是REGEXP_LIKE()的同义词;

select 1 from dual where 'congge' rlike '^c.*e$';
select 1 from dual where '123456' rlike '^\\d+$';  --判断是否全为数字
select 1 from dual where '123456aa' rlike '^\\d+$';

 如果是匹配开始c结尾为e,则能匹配到结果

regexp

功能与rlike相同 用于判断字符串是否匹配正则表达式

select 1 from dual where 'congge' regexp '^c.*e$';

3.3  算术运算符

算术运算符操作数必须是数值类型。 分为一元运算符和二元运算符:

  •  一元运算符,只有一个操作数;
  •  二元运算符有两个操作数,运算符在两个操作数之间;

常用算术运算符:

运算符含义表达式
加减乘除操作+ - * /
取整操作div
取余操作%
位与操作&
位或操作|
位异或操作^
位取反操作 ~

取整操作

 div  给出将A除以B所得的整数部分。例如17 div 3得出5;

取余操作: %  

也叫做取模mod  A除以B所得的余数部分 

位与操作: &

 A和B按位进行与操作的结果, 与表示两个都为1则结果为1

select 4 & 8 from dual;  --4转换二进制:0100 8转换二进制:1000
select 6 & 4 from dual;  --4转换二进制:0100 6转换二进制:0110

位或操作: |

A和B按位进行或操作的结果  或表示有一个为1则结果为1

select 4 | 8 from dual;
select 6 | 4 from dual;

位异或操作: ^

A和B按位进行异或操作的结果 异或表示两者的值不同,则结果为1

select 4 ^ 8 from dual;
select 6 ^ 4 from dual;

3.4  逻辑运算符

逻辑运算符应该算大家很熟悉的一种了,在很多编程语言中需要通过条件判断从而确定是true或者false,就属于逻辑运算符的范畴;

常用逻辑运算符:

运算符含义表达式
与操作A AND B
或操作A OR B
非操作NOT A 、!A
在操作A IN (val1, val2, ...)
不在操作A NOT IN (val1, val2, ...)
逻辑是否存在[NOT] EXISTS (subquery)

与操作: A AND B 

如果A和B均为TRUE,则为TRUE,否则为FALSE。如果A或B为NULL,则为NULL

select 1 from dual where 3>1 and 2>1;

运行结果 

或操作: A OR B  

如果A或B或两者均为TRUE,则为TRUE,否则为FALSE

select 1 from dual where 3>1 or 2!=2;

运行结果

非操作: NOT A 、!A  

如果A为FALSE,则为TRUE;如果A为NULL,则为NULL。否则为FALSE

select 1 from dual where not 2>1;
select 1 from dual where !2=1;

运行结果

 在:A IN (val1, val2, ...)

如果A等于任何值,则为TRUE,这个和mysql中的in的范围查询很类似;

select 1 from dual where 11  in(11,22,33);

运行结果

不在:A NOT IN (val1, val2, ...)

如果A不等于任何值,则为TRUE

select 1 from dual where 11 not in(22,33,44);

运行结果

逻辑是否存在: [NOT] EXISTS (subquery)

将主查询的数据,放到子查询中做条件验证,根据验证结果(TRUE 或 FALSE)来决定主查询的数据结果是否得以保留;

select A.* from A
where exists (select B.id from B where A.id = B.id);

3.5  其他运算符

字符串拼接函数

select concat()

复杂类型的构造运算符,也可以理解为hive的内置函数

复杂类型的构造运算符

 array使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/313642.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023-12-23 LeetCode每日一题(移除石子使总数最小)

2023-12-23每日一题 一、题目编号 1962. 移除石子使总数最小二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数数组 piles &#xff0c;数组 下标从 0 开始 &#xff0c;其中 piles[i] 表示第 i 堆石子中的石子数量。另给你一个整数 k &#xff0c;请你执行下述…

关于镜头景深的计算

1、问题背景 在调试项目的过程中&#xff0c;我们需要知道所搭配镜头的对焦距离、景深范围是多少&#xff0c; 这属于基本的项目信息&#xff0c;很多时候往往就因为忽略了这些小的信息&#xff0c;而导致一系列问题。 比如之前调试的一款化妆镜的设备&#xff0c;客户反馈了…

Pytest 项目结合Jenkins

一、window安装centos7虚拟机 参考网上其他教程 二、Linux安装Jenkins 进入jenkins.io网址&#xff0c;点击download&#xff0c;选择CentOS版本 1、Linux中安装java环境和git Jenkins的运行需要java环境&#xff1b;安装git是为代码上传给仓库做准备&#xff1b; yum - y…

MySQL8.0 ROW_NUMBER 调用案例

ROW_NUMBER()是一个窗口函数或分析函数&#xff0c;它为从1开始应用的每一行分配一个序号。 创建表和生成所需要的数据 CREATE TABLE chapter11 ( shopname VARCHAR(255) NULL, sales VARCHAR(255) NULL, sale_date DATE NULL ); INSERT INTO chapter11 (shopname, sales, sal…

【编译原理】期末预习做题向I

新的一年希望可以成为更好的人嘿嘿&#xff01; 这一篇基本就是把 up 讲的题都截了一遍然后加了点自己的笔记啥的 O.o &#xff08;不妥的话会删掉的 qwq&#xff0c;希望没事嘿嘿&#xff09; 来源&#xff1a;混子速成 I. 绪论 记住组成部分 II. 前后无关文法和语言 1.…

软件测试/测试开发丨Python 常用第三方库 pymysql

pymysql 概述 Python 的数据库接口标准是 Python DB-APIPyMySQL 是从 Python 连接到 MySQL 数据库服务器的接口PyMySQL 的目标是成为 MySQLdb 的替代品官方文档&#xff1a;pymysql.readthedocs.io/ pymysql 安装 使用 pip 安装使用 Pycharm 界面安装 pip install pymysqlp…

Spring高手之路-Spring事务的传播机制(行为、特性)

目录 含义 七种事务传播机制 1.REQUIRED&#xff08;默认&#xff09; 2.REQUIRES_NEW 3.SUPPORTS 4.NOT_SUPPORTED 5.MANDATORY 6.NEVER 7.NESTED 含义 Spring事务的传播机制是指在多个事务方法相互调用时&#xff0c;如何处理这些事务的传播行为。对应七种事务传播行为…

【Vue2+3入门到实战】(17)VUE之VueCli脚手架自定认创建项目、ESlint代码规范与修复、 ESlint自动修正插件的使用 详细示例

目录 一、本节内容二、VueCli 自定义创建项目三、ESlint代码规范及手动修复1.JavaScript Standard Style 规范说明2.代码规范错误3.手动修正 四、通过eslint插件来实现自动修正 一、本节内容 VueCli脚手架自定认创建项目ESlint代码规范与修复ESlint自动修正插件 二、VueCli 自…

爱吃饼干的小白鼠2023年终总结

目录 前言 学习生活经历 回顾2023 参加活动 回顾点点滴滴 展望2024 2024年新的起点和目标 前言 大家好&#xff0c;我是爱吃饼干的小白鼠。今天刚好是2024年1月1日&#xff0c;时间飞逝&#xff0c;2023年过的飞快&#xff0c;我已经入驻CSDN有一年了&#xff0c;这一年…

Python实现【亚马逊商品】数据采集

前言 亚马逊公司&#xff0c;是美国最大的一家网络电子商务公司&#xff0c;位于华盛顿州的西雅图 是网络上最早开始经营电子商务的公司之一&#xff0c;亚马逊成立于1994年 今天教大家用Python批量采集亚马逊平台商品数据&#xff08;完整代码放在文末&#xff09; 地址&#…

SpireCV项目实战——电诈园区人员及房屋情况识别

项目介绍前言 随着科技的进步和大数据时代的到来&#xff0c;计算机视觉技术逐渐渗透到各个行业领域&#xff0c;为人们的生活和工作带来了诸多便利。近年来&#xff0c;电信诈骗案件频发&#xff0c;给社会带来了巨大的经济损失和心理负担。电诈园区作为电信诈骗的高发区域&a…

X-AnyLabeling 图像标注工具及模型自动标注;json2yolo格式转换、yolo训练数据集划分

一、X-AnyLabeling 图像标注工具及模型自动标注 参考:https://github.com/CVHub520/X-AnyLabeling 1、下载 直接https://github.com/CVHub520/X-AnyLabeling/releases/tag/下载对应版本 软件打开: 2、自定义标注模型yaml构建 这里自定义模型自动标注加载预训练的yolov8…