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.mzph.cn/news/147949.shtml

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

相关文章

Apache Hive源码阅读环境搭建

前置软件: JDK 1.8 Maven 3.3.9 1 下载源码 # 下载源码 git clone https://github.com/apache/hive.gitcd hive# 查看标签 git tag# 切换到要阅读的指定版本的tag git checkout rel/release-2.1.02 编译源码 mvn clean install -DskipTests执行报错 日志如下 E…

VisualBox7.0.12 主机和宿舍互PING设置

设置成桥接模式 主机设置 虚拟机设置

搜索引擎ElasticSearch分布式搜索和分析引擎学习,SpringBoot整合ES个人心得

ElasticSearch Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elas…

stable diffusion到底是如何工作的

stable diffusion简单入门 stable diffusion是一个文生图模型,主要由CompVis、Stability AI和LAION的研究者们创建。这个模型主要是在512X512分辨率的图像上训练的,训练数据集是LAION-5B,该数据集是目前可访问的最大的多模态数据集。 在这篇…

Android---网络编程优化

网络请求操作是一个 App 的重要组成部分,程序大多数问题都是和网络请求有关。使用 OkHttp 框架后,可以通过 EventListener 来查看一次网络请求的详细情况。一次完整的网络请求会包含以下几个步骤。 也就是说,一次网络请求的操作是从 DNS 解析…

C++类与对象(1)—初步认识

目录 一、面向过程和面向对象 二、类 1、定义 2、类的两种定义方式 3、访问限定符 4、命名规范化 5、类的实例化 6、计算类对象的大小 7、存储方式 三、this指针 1、定义 2、存储位置 3、辨析 四、封装好处 一、面向过程和面向对象 C语言是面向过程的&#xf…

4.6每日一题(多元函数的隐函数求导)

三元方程确定的二元函数类型的隐函数 方法一:两边对x求偏导,把y看成常数 注:z可以把x和y同时代入求出答案 方法二:带公式

Python爬虫教程:从入门到实战

更多Python学习内容:ipengtao.com 大家好,我是涛哥,今天为大家分享 Python爬虫教程:从入门到实战,文章3800字,阅读大约15分钟,大家enjoy~~ 网络上的信息浩如烟海,而爬虫(…

学习指南:如何快速上手媒体生态一致体验开发

过去开发者们在使用多媒体能力时,往往会遇到这样的问题,比如:为什么我开发的相机不如系统相机的效果好?为什么我的应用和其他的音乐一起发声了,我要怎么处理?以及我应该怎么做才能在系统的播控中心里可以看…

计算机组成原理-双端口RAM和多模块存储器

文章目录 存取周期总览双端口RAM多体并行存储器低地址交叉编址有多少个存储体合适(体号)多模块存储器(多体存储器)总结实际场景 存取周期 总览 双端口RAM RAM:用于主存或高速缓存,断电数据丢失 多体并行…

qsort函数使用方法总结

目录 一、qsort函数原型 二、compar参数 三、各种类型的qsort排序 1. int 数组排序 2. 结构体排序 3. 字符串指针数组排序 4. 字符串二维数组排序 四、回调函数 1. 什么是回调函数 2. 为什么要用回调函数? 3. 怎么使用回调函数? 4.下面是…

分支限界法(1)--旅行商问题

一、概述 有n个城市,旅行者要访问所有n个城市,最终回到起始点,假设起始点给定为1,城市间距离已知,求能够完成旅行的最短距离。题干如下图。 算法:分支限界法,使用队列进行bfs搜索。 二、代码 i…

低代码在ERP中的理解与应用:提升开发效率与业务灵活性

企业资源规划(ERP)指通过融合不同部门的信息和流程,提升企业效率、融洽运营的管理体系。ERP系统通过提供一套集成化应用程序,助力企业管理工作流程,包含选购、库存、销售、生产规划等。 低代码(Low-Code&a…

在listener.ora配置文件中配置listener 1527的监听并且使用tnsnames连接测试

文章目录 前言:一、命令语句实现1、监听介绍2、编辑 listener.ora 文件:寻找配置文件对配置文件进行配置 3、重启监听4、配置TNS 二、图形化界面实现1、listener.ora文件配置2、tnsnames.ora文件配置 三、测试连接 前言: 命令实现和图形化实…

遥感数据

在研究中,我们常需要遥感数据。在下面的网站中,可以得到遥感数据。 EarthExplorer (usgs.gov)https://earthexplorer.usgs.gov/登陆网站: 通常,在Additional Criteria中,可以下载遥感数据。 不过,这个选项…

安顿APP3.0全新升级,引领智能穿戴健康革新,专注预警疾病风险

随着人们生活水平的提高和工作压力的增加,心脑血管疾病已经成为现代社会的严重问题,特别是心梗、脑卒中等疾病已经开始夺去年轻人的生命。 据报道,近年来,多位年轻人因心脑血管疾病突发去世,如42岁的知名男演员、30岁的…

【C刷题】day7

🎥 个人主页:深鱼~🔥收录专栏:【C】每日一练🌄欢迎 👍点赞✍评论⭐收藏 一、选择题 1、以下对C语言函数的有关描述中,正确的有【多选】( ) A: 在C语言中,一…

java--拼图游戏

1、了解拼图游戏基本功能: 拼图游戏内容由若干小图像块组成的,通过鼠标点击图像块上下左右移动,完成图像的拼凑。 2、拼图游戏交互界面设计与开发: 通过创建窗体类、菜单、中间面板和左右面板完成设计拼图的交互界面 &#xff…

java 实现串口通讯

1、引入依赖 <dependency><groupId>org.scream3r</groupId><artifactId>jssc</artifactId><version>2.8.0</version> </dependency>2、配置启动串口 Component public class ContextHolder implements ApplicationContextAw…

使用共享内存进行通信的代码和运行情况分析,共享内存的特点(拷贝次数,访问控制),加入命名管道进行通信的代码和运行情况分析

目录 示例代码 头文件(comm.hpp) log.hpp 基础版 -- 服务端 代码 运行情况 加入客户端 代码 运行情况 两端进行通信 客户端 代码 注意点 服务端 代码 两端运行情况 共享内存特点 拷贝次数少 管道的拷贝次数 共享内存的拷贝次数 没有访问控制 管道 共享…