Hive3:常用的内置函数

1、查看函数列表

sql 复制代码
-- 查看所有可用函数
show functions;
-- 查看count函数使用方式
describe function extended count;

2、数学函数

sql 复制代码
-- round 取整,设置小数精度
select round(3.1415926);		-- 取整(四舍五入)
select round(3.1415926, 4);		-- 设置小数精度4位(四舍五入)
-- 随机数
select rand();					-- 完全随机
select rand(3);					-- 设置随机数种子,设置种子后每次运行结果一致的
-- 绝对值
select abs(-3);
-- 求PI
select pi();

3、集合函数

sql 复制代码
-- 求元素个数
select size(work_locations) from test_array;
select size(members) from test_map;
-- 取出map的全部key
select map_keys(members) from test_map;
-- 取出map的全部value
select map_values(members) from test_map;
-- 查询array内是否包含指定元素,是就返回True
select * from test_array where ARRAY_CONTAINS(work_locations, 'tianjin');
-- 排序
select *, sort_array(work_locations) from test_array;

4、类型转换函数

sql 复制代码
-- 转二进制
select binary('hadoop');
-- 自由转换,类型转换失败报错或返回NULL
select cast('1' as bigint);

5、日期函数

sql 复制代码
-- 当前时间戳
select current_timestamp();
-- 当前日期
select current_date();
-- 时间戳转日期
select to_date(current_timestamp());
-- 年月日季度等
select year('2020-01-11');
select month('2020-01-11');
select day('2020-01-11');
select quarter('2020-05-11');		--季度
select dayofmonth('2020-05-11');
select hour('2020-05-11 10:36:59');
select minute('2020-05-11 10:36:59');
select second('2020-05-11 10:36:59');
select weekofyear('2020-05-11 10:36:59');
-- 日期之间的天数
select datediff('2022-12-31', '2019-12-31');
-- 日期相加、相减
select date_add('2022-12-31', 5);
select date_sub('2022-12-31', 5);

6、条件函数

sql 复制代码
-- if判断
SELECT if (truename is NULL,'没有填写姓名',truename) from users;

--null判断
SELECT isnull(truename) from users;
SELECT isnotnull(truename) from users;

--nvl ,如果字段值为null,则返回默认值,否则返回字段的值,等同于if判断的效果
SELECT nvl(truename,'无姓名') from users;
-- 返回第一个不是null的v,如果所有v都是null,则返回null
SELECT COALESCE (truename,brithday) from users;
-- 当a=b,返回c,当a=d时返回e,否则返回f
SELECT username ,CASE username when '周杰轮' THEN '著名歌星' WHEN '张鲁依' THEN '著名演员' ELSE '未知人员' END FROM users;
SELECT truename ,CASE when truename is null then '无姓名' ELSE truename end FROM users;

--如果 a=b ,则返回null,否则返回a。
SELECT truename ,NULLIF (truename,NULL) from users u ;

7、字符串函数

sql 复制代码
-- 连接字符串
SELECT CONCAT(loginname,username)  FROM users u ;
SELECT CONCAT_WS(',',loginname,username) from users u ;
-- 统计长度
SELECT username ,LENGTH (username) FROM users u ;

-- 转换大小写
SELECT LOWER('ABC')  ;
SELECT UPPER('avc')  ;

-- 去除收尾空格
SELECT TRIM('  hadoop   ds   ')  ;

-- 字符串分割
SELECT split('aaaa,bbbb,ccc',',')[0];

8、数据脱敏函数

sql 复制代码
-- hash加密(结果是16进制字符串)
SELECT mask_hash('hadoop');

9、其他函数

sql 复制代码
-- hash加密  结果是数字
SELECT hash('aaahsdd');

-- 当前用户
SELECT CURRENT_USER();

--当前数据库
SELECT CURRENT_DATABASE();

--hive版本
SELECT VERSION(); 

--计算md5
SELECT MD5('HADOOP');
相关推荐
摇滚侠10 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
川石课堂软件测试10 小时前
学习软件测试需掌握的一些知识
数据库·python·sql·功能测试·网络协议·mysql·http
2501_9377671611 小时前
自建 SQL 数据库定时备份踩坑复盘与落地思路
数据库·sql
silvamux_12 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
I Am a robert girl14 小时前
从 GameHorizon 拆解多时间尺度游戏评测:数据管线、离线基准与在线回放的三层设计
数据库·游戏·多时间尺度·数据管线·游戏评测·离线基准·在线回放
躺柒14 小时前
读数据安全架构设计与实践17安全架构案例(下)
数据库·安全·零信任·安全架构·防火墙·无边界
SelectDB15 小时前
实时更新排错现场:导入了却查到旧数据,和 FINAL 越加越慢的两条路
大数据·数据库·数据分析
SelectDB15 小时前
拿 Planet 的账单一行行对下来,我总结出三个可自查的校验点
大数据·数据库·数据分析
SelectDB15 小时前
Apache Doris + Vane:让多模态数据进入业务分析
大数据·数据库·数据分析
pjj1985417 小时前
ClickHouse 与 Doris 数据库技术梳理:看懂分析型数据库
数据库·clickhouse