2023.11.15 hive sql之函数标准,字符串,日期,数学函数

目录

一.函数分类标准

二.查看官方函数,与简单演示

三.3种类型函数演示

四.字符串函数

1.常见字符串函数

2.索引函数

 解析函数

五.日期函数 

 1.获取当前时间

 2.获取日期相关

 3.周,季度等计算

4.时间戳 

六.数学函数


一.函数分类标准

目前hive三大标准
UDF:(User-Defined-Function)普通函数:  特点是一进一出(输入一行数据输出一行数据)        举例: split
UDAF:(User-Defined Aggregation Function)聚合函数: 特点是多进一出(输入多行输出一行)   举例: count sum max  min  avg
UDTF:(User-Defined Table-Generating Functions)表生成函数:  特点是一进多出(输入一行输出多行)   举例: explode

二.查看官方函数,与简单演示

-- 创建数据库
create database hive5;-- 使用库
use hive5;-- 查看库扩展信息
describe database extended hive5;-- 查看指定函数基本信息
desc function split;-- 查看所有hive函数
show functions;
-- 289个-- 查看函数扩展信息,并演示官方的函数示例
describe function extended split;
SELECT split('oneAtwoBthreeC', '[ABC]'); -- ["one","two","three",""]
describe function extended count;
describe function extended `current_timestamp`;

三.3种类型函数演示

普通函数(一进一出)

-- 演示普通函数示例 (一进一出)
-- 查看指定函数详细扩展信息(有对应示例)
desc function extended split;
select split('one,two,three',',');

聚合函数(多进一出)

-- 聚合函数(多进一出)
--select min|max|sum|count|avg(字段名) from 表名;

炸裂函数(一进多出)

-- 演示炸裂函数示例(一进多出),关键字:explode 炸裂
-- 查看指定函数详细扩展信息(有对应示例)
desc function extended explode;-- 已知array容器中"苹果","香蕉","西瓜","哈密瓜","火龙果","榴莲"要求炸开
select explode(`array`("苹果","香蕉","西瓜","哈密瓜","火龙果","榴莲"));
select explode(`array`("a","b","c","d","e","f"));
select explode(map('a',1,'b',2,'c',3));

四.字符串函数

1.常见字符串函数

---------------------------------字符串函数----------------------------------------------- 演示字符串常见的函数
-- concat: 字符串紧凑拼接到一起生成新字符串
select concat('bbdwj','123','456');   --bbdwj123456-- concat_ws: 字符串用指定分隔符拼接到一起生成新字符串
select concat_ws('-','bbdwj','123','456');  --bbdwj-123-456-- length: 获取字符串长度
select length('bbdwj123456');  -- 11-- lower: 把字符串中的字母全部变成小写
select lower('BAIBAIDEWJ');  --baibaidewj-- upper: 把字符串中的字母全部变成大写
select upper('baibaidewj'); --BAIBAIDEWJ-- trim: 把字符串两端的空白去除
select trim('   baibaideweijie  '); --baibaideweijie-- split :从指定的字符串开始左右切割
select split('baiQbaiQdeQweiQjie','Q'); --["bai","bai","de","wei","jie"]

2.索引函数

---------------------------------索引----------------------------------------------- substr(字符串,开始索引,截取长度): 截取字符串
-- 注意: 正索引从1开始正着数  负索引从-1开始负着数
select substr('b12345678cda',1,5);  --从1开始数,步长为5
select substr('b12345678cda',1);  -- 步长不写,默认到结尾
select substr('b12345678cda',-7);  -- 从负索引-7开始,正着往后走到最后-- 已知'2023-05-21'要求分别截取年月日
select substr('2023-05-21',1,4); --2023
select substr('2023-05-21',6,2); -- 05
select substr('2023-05-21',9,2); -- 21
select substr(`current_date`(),1,7); --获取当前月份 2023-11 -- replace(大字符串,敏感词,替换后的内容):替换字符串
select replace('我是bbdwj','我是','**'); -- **bbdwj--正则表达式替换函数:regexp_replace(str, regexp, rep)
select regexp_replace('bbdwj-123','\\d+','您好');  --\d代表digit数字,用正则匹配到字符串然后替换--正则表达式解析函数:regexp_extract(str, regexp[, idx])
-- 正则中()代表分组,自动从1开始生成编号,提取正则匹配到的指定组内容
select regexp_extract('bbdwj-123-789','(\\d+)-(\\d+)',1);--用正则匹配数字,后面1代表匹配到的第一个数字组是123
select regexp_extract('bbdwj-123-789','(\\d+)-(\\d+)',2);--用正则匹配数字,后面1代表匹配到的第一个数字组是789

 解析函数

--URL解析函数:parse_url 注意要想一次解析出多个 可以使用parse_url_tuple这个UDTF函数
-- URL: 统一资源定位符 也就是咱们常说的网址   组成: 协议 主机地址:端口号 资源路径 查询参数--快速从网址中获取需要的信息,host , path , query , user , pwd
select parse_url('http://www.itcast.cn/path/binzi.html?user=binzi&pwd=123', 'HOST'); --www.itcast.cn
select parse_url('http://www.itcast.cn/path/binzi.html?user=binzi&pwd=123', 'PATH'); --/path/binzi.html
select parse_url('http://www.itcast.cn/path/binzi.html?user=binzi&pwd=123', 'QUERY');--user=binzi&pwd=123
select parse_url('http://www.itcast.cn/path/binzi.html?user=binzi&pwd=123', 'QUERY', 'user');--binzi
select parse_url('http://www.itcast.cn/path/binzi.html?user=binzi&pwd=123', 'QUERY', 'pwd');--123

五.日期函数 

 1.获取当前时间

-------------------------------------时间函数---------------------------------------------
-- 2.日期时间函数
-- 获取当前时间戳(时间原点到现在的秒/毫秒)
select unix_timestamp(); -- 1684639237
select current_timestamp(); -- 转换成现在的时间-- 获取当前日期
select current_date(); -- 2023-05-21-- 字符串格式时间戳转日期
select to_date('2023-05-21 11:19:31.222000000');
select to_date(current_timestamp());

 2.获取日期相关

-- 依次获取年月日时分秒
select year(`current_date`()); --2023
select month(`current_date`()); -- 11
select day(`current_date`());  --15select hour(`current_timestamp`()); --11
select minute(`current_timestamp`()); --4
select second(`current_timestamp`()); --32-- 计算时间差
select datediff('2024-07-24','2023-07-24'); -- 新的时间在前,旧的在后 366-- 获取明天的日期
select date_add(current_timestamp(),1); --获取明天的日期
select date_sub(current_timestamp(),-1); --获取明天的日期-- 获取昨天的日期
select date_sub(current_timestamp(),1);-- 获取昨天的日期
select date_add(current_timestamp(),-1);-- 获取昨天的日期

 3.周,季度等计算

-- 依次获取现在是月中第几天,周中第几天,季度,年中第几周
select dayofmonth(current_timestamp()); -- day of month 获取今天是本月中的第几天
select `dayofweek`(`current_timestamp`());-- day of week 获取今天是本周的第几天,星期天才是一周的开始
select quarter(`current_timestamp`()); -- quarter 获取现在是本年的第几个季度,一年分为四季
select weekofyear(`current_timestamp`()); -- week of year 获取本周是今年的第几周

4.时间戳 

-- 拓展
--获取当前UNIX时间戳函数: unix_timestamp
select unix_timestamp(); -- 1684640319--字符串日期转UNIX时间戳函数: unix_timestamp
select unix_timestamp("2023-5-21 11:38:56"); -- 1684669136--指定格式日期转UNIX时间戳函数: unix_timestamp
select unix_timestamp('20230521 11:38:56','yyyyMMdd HH:mm:ss'); --1684669136--UNIX时间戳转日期函数: from_unixtime
select from_unixtime(1684669136); -- 2023-05-21 11:38:56
-- 获取时间原点日期
select from_unixtime(0); -- 1970-01-01 00:00:00

六.数学函数

-- 随机数
select rand();--拼接随机数
select concat('我的余额是:',rand());-- 获取π值
select pi();-- 四舍五入设置保留位数
select round(pi(),4);-- 向上取整
select ceil(pi());  --ceil天花板
select ceil(2.14); --3-- 向下取整
select floor(pi()); --floor 地板
select floor(2.14); --2

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

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

相关文章

餐厅订座预约小程序的效果如何

市场中无论哪种城市,餐厅非常多,一条不长的商业街,汇聚着数家餐饮品牌,且相互间竞争激烈,并且各个商家都希望用成本低高效率的方法引流及转化。 随着互联网深入各个行业,传统餐饮行业经营痛点不少。 传统餐…

MAC地址注册的网络安全影响和措施分析

MAC地址注册对网络安全具有重要影响,同时也需要采取相应的措施来应对潜在的安全风险。以下是有关MAC地址注册的网络安全影响和应对措施的分析: 影响: 1. 身份验证:MAC地址注册可用于设备的身份验证,但MAC地址本身并不…

VUE基础的一些实战总结

目录 创建一个 Vue 应用 步骤 1:安装 Node.js 和 npm 步骤 2:安装 Vue CLI 步骤 3:创建 Vue 项目 步骤 4:启动开发服务器 步骤 5:访问应用程序 步骤 6:编辑 Vue 应用 步骤 7:构建和部署…

互联网+智慧河道大数据一体化管理平台解决方案:PPT43页,附下载

关键词:售前方案工程师,解决方案工程师,技术转售前,技术转售前的优势,软件工程师转售前 一、智慧水务大数据一体化建设背景 1、当前我国供水管网迅速扩张,管理压力加大,供水管网漏损率比较高&…

[Jenkins] Docker 安装Jenkins及迁移流程

系统要求 最低推荐配置: 256MB可用内存1GB可用磁盘空间(作为一个Docker容器运行jenkins的话推荐10GB) 为小团队推荐的硬件配置: 1GB可用内存50 GB 可用磁盘空间 软件配置: Java 8—无论是Java运行时环境(JRE)还是Java开发工具包(JDK&#xff…

如何将图片转为excel或word?(客户端)

演示软件:金鸣表格文字识别大师3.6.1(新版本界面可能会略有不同) 第一部分 将图片转为excel或文表混合的word 一般的软件要将图片转为可编辑的excel,都需要待识别的图片要有明显清晰的表格线,但我们程序现已克服了这…

051-第三代软件开发-日志容量时间限制

第三代软件开发-日志容量时间限制 文章目录 第三代软件开发-日志容量时间限制项目介绍日志容量时间限制 关键字: Qt、 Qml、 Time、 容量、 大小 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML(Qt Meta-Object Language…

【QT HTTP】使用QtNetwork模块制作基于HTTP请求的C/S架构

目录 0 引言1 HTTP基本知识1.1 请求类型1.2 HTTP请求报文格式1.3 HTTP响应报文格式1.4 拓展:GET vs POST 请求方法GET请求请求报文:响应报文 POST请求请求报文响应报文 其他注意事项示例:GET请求示例POST请求示例 2 实战2.1 QtNetwork模块介绍…

【PIE-Engine 数据资源】8天合成LAI产品(MOD15A2H.006)

文章目录 一、 简介二、描述三、波段四、属性五、示例代码参考资料 【PIE-Engine 数据资源】xxx 一、 简介 数据名称8天合成LAI产品(MOD15A2H.006)时间范围2000年-现在空间范围全球数据来源NASA代码片段var images pie.ImageCollection(“USGS/MOD15A2H/006”) 二、描述 全球…

云ES使用集群限流插件(aliyun-qos)

aliyun-qos插件是阿里云Elasticsearch团队自研的插件,能够提高集群的稳定性。该插件能够实现集群级别的读写限流,在关键时刻对指定索引降级,将流量控制在合适范围内。例如当上游业务无法进行流量控制时,尤其对于读请求业务,可根据aliyun-qos插件设置的规则,按照业务的优先…

深度学习入门(第四天)——递归神经网络与词向量原理解读

一、RNN网络架构解读 常规神经网络并不能考虑时间序列的特征(比如前天昨天今天或者带有前后关联的特征),现在每个特征都是独立考虑的,那么如果有这样的特征,网络应该怎么学呢 而递归递归网络hidden这里的转回箭头&…

【电路笔记】-快速了解无源器件

快速了解无源器件 文章目录 快速了解无源器件1、概述2、电阻器作为无源器件3、电感器作为无源器件4、电容器作为无源器件5、总结 无源器件是电子电路的主要构建模块,没有它们,这些电路要么根本无法工作,要么变得不稳定。 1、概述 那么什么是…

MAC地址_MAC地址格式_以太网的MAC帧_基础知识

MAC地址 全世界的每块网卡在出厂前都有一个唯一的代码,称为介质访问控制(MAC)地址 一.网络适配器(网卡) 要将计算机连接到以太网,需要使用相应的网络适配器(Adapter),网络适配器一般简称为“网卡”。在计算机内部,网卡与CPU之间的通信&…

kafka分布式安装部署

1.集群规划 2.集群部署 官方下载地址:http://kafka.apache.org/downloads.html (1)上传并解压安装包 [zhangflink9wmwtivvjuibcd2e package]$ tar -zxvf kafka_2.12-3.3.1.tgz -C ../software/(2)修改解压后的文件…

2023年中国疗养院收入规模、疗养院数量及利润统计[图]

疗养院是运用疗养为主要手段,专门为疾病康复疗养和健康疗养而设立的医疗、预防和保健机构。疗养院通过提供物理治疗(如水疗、光疗),并配合饮食、体操等疗法,利用自然疗养因子和人工疗养因子作用于人体,达到预防、保健、矫治和康复…

JUNIT使用和注意、以及断言的介绍使用、SpringBoot Test测试类的使用、maven配置使用junit详细介绍

参考文章: https://www.cnblogs.com/zhukaile/p/14514238.html,https://blog.csdn.net/qq_36448800/article/details/126438339 一、什么是单元测试 在平时的开发当中,一个项目往往包含了大量的方法,可能有成千上万个。如何去保…

RabbitMQ-基础篇-黑马程序员

代码: 链接: https://pan.baidu.com/s/1nQBIgB_SbzoKu_XMWZ3JoA?pwdaeoe 提取码:aeoe 微服务一旦拆分,必然涉及到服务之间的相互调用,目前我们服务之间调用采用的都是基于OpenFeign的调用。这种调用中,调…

【Java 进阶篇】JQuery 遍历:发现元素的魔法之旅

欢迎来到 JQuery 的奇妙世界,一个充满活力和灵感的地方。在这个世界里,我们将一起探讨 JQuery 的遍历功能,这是一个让你轻松发现和操作网页元素的神奇工具。无需太多前端经验,只要有一颗探险的心,你就能在 JQuery 遍历…

论文阅读——RetNet

transformer的问题:计算量大,占用内存大,不好部署。 所以大家在找能解决办法,既能和transformer表现一样好,又能在推理阶段计算复杂度很低。 这些方法大概分类三类:一是代替transformer非线性注意力机制的…

智能导诊系统:基于机器学习和自然语言处理技术,可快速推荐合适的科室和医生

智能导诊系统是一种基于人工智能技术的新型系统,它能够为医院提供患者服务和管理,提高医院的管理效率和服务水平。 技术架构:springbootredismybatis plusmysqlRocketMQ 以下是智能导诊系统的应用场景和功能特点: 应用场景 1.患…