HiveSQL常用函数

1.字符串函数

1.1 split()函数

用于切割字符串

格式: split('参数1','参数2'),这里的参数1为数据,参数2为切割方式

细节:参数二可以用正则表达式

举例

select split('abcd','c');  --结果为["ab","d"]
select split('asd11mcd22', '11');  --结果为["asd","mcd22"]

select split('asd11mc22dd', '\\d+');  --结果为["asd","mc","dd"]

1.2 concat()函数

用于拼接字符串

格式: concat('数据1','数据2'......)

细节:该函数拼接没有拼接符,直接拼接在一起

举例

select concat('asd123','ff');  --结果为asd123ff

1.3 concat_ws()函数

也是用于拼接字符串

格式: concat_ws('拼接符','数据1','数据2',......)

举例

select concat_ws('-','abcfs','mm','cc');  --结果为abcfs-mm-cc

1.4 substr()函数

用于截取字符串

格式: substr('数据',起始位置,截取多少位)

细节:空格也算一位

举例

select substr('2001-07-09 00:00:00',1,10);  --获取年月日 2001-07-09
select substr('2001-07-09 00:00:00',12,8);  --获取时间 00:00:00
select substr('2001-07-09 00:00:00',1,4);  --获取年 2001
select substr('2001-07-09 00:00:00',6,2);  --获取月 07

2.时间函数

2.1 current_timestamp()函数

返回当前日期及时间

举例

select `current_timestamp`();

2.2 current_date()函数

获取当前日期

举例

select current_date();

2.3 unix_timestamp()函数

获取时间原点

解释:时间原点指的是自1970年1月1日00:00:00 UTC以来的秒数,作为计算机系统中记录时间的基准。

举例

select  unix_timestamp();  --1705844247

2.5 from_unixtime()

用于将UNIX时间戳(表示从1970年1月1日00:00:00 UTC开始经过的秒数)转换为日期时间格式。

举例

select from_unixtime(1888888889); --输出结果为 2029-11-09 11:21:29

2.6 year month day函数

获取年月日

举例

-- 获取时间年
select year('2024-10-12 10:12:10');

-- 获取时间月
select month('2024-10-12 10:12:10');

-- 获取日
select day('2024-10-12 10:12:10');

2.7 quarter()函数

获取季度函数

举例

select quarter('2024-10-12 10:12:10'); --输出结果为4,表示第四季度
select quarter('2024-5-12');  --输出结果为2,表示第二季度

3.数学函数

3.1 abs()函数

绝对值函数

举例

select abs(-10); --输出结果为10

3.2 round()函数

格式:round(参数1,参数2)

参数1表示数据,参数2表示保留小数位数,注意四舍五入

举例

select round(100.156,2);  --输出结果为100.16

3.3 rand()函数

取随机数

举例

select rand();  --取0到1之间的随机数
select rand()*100;  --取0到100之间的随机数

3.4 ceil()函数

天花板函数

解释:取给定的数值转为最接近且大于等于它的整数

举例

select ceil(10.6);  --输出结果为11

3.5 floor()函数

地板函数

解释:取给定的数值转为最接近且小于等于它的整数

举例

select `floor`(10.6); --输出结果为10

3.6 pow()函数

求次方函数

格式:pow(参数1,参数2)

表示参数1的参数2次方

举例

select pow(3,2);  --表示3的2次方,结果为9

4.转换函数

4.1 if()函数

举例

select `if`(5>3,true ,false); --输出为true
select `if`(0<-1,true,false); --输出为flase

4.2 isnull()函数

判断是否为空

注意:只有为null时才是空

举例

select isnull('');  --输出为false
select isnull(null);  --输出为true
select isnull(0);   --输出为false

4.3 isnotnull()函数

判断是否不为空

举例

select isnotnull('');  --输出为true
select isnotnull(null);  --输出为false
select isnotnull(0);  --输出为true

4.4 nvl()函数

空值转换函数

判断参数1是否为空,不为空就返回参数1,为空就返回参数2

举例

select nvl(1,2);  --输出值为1
select nvl(null,2);  --输出值为2

4.5 coalesce()函数

格式:coalesce(参数1,参数2,参数3......)

返回第一个不为空的值

举例

select coalesce(1,2,3,4,5,6);  --输出结果为1
select coalesce(null,1,5,null,67); --输出结果为1
select coalesce(null,null,null,5,1,null,88,null);  --输出结果为5

4.6 case when 函数

格式 case when 条件 then 结果 else 结果

举例

select case
    when 5>3 then '大于'
    when 5>3 then '小于'
    else '等于'
end;   --结果为大于

case when 语法糖

select case 5
 when 1 then '星期一'
 when 2 then '星期二'
 when 3 then '星期三'
 when 4 then '星期四'
 when 5 then '星期五'
else '周末'
end;   --结果为星期五

4.7 cast()函数

用于转换类型

举例

select cast(1 as string);
select cast(10.5 as int);  --结果为10
select cast(10.3 as int);  --结果为10
select cast(15 as double);
select cast('123' as boolean);  --结果为true
select cast('0' as boolean);  --结果为false
select cast('' as boolean);   --结果为false

5.加密 脱敏相关函数

5.1 hash()函数

哈希函数

举例

select hash('asd123');

5.2 加密函数

md5,sha1,sha2,crc32

举例

select md5('123');  --加密后为202cb962ac59075b964b07152d234b70
select sha1('123');  --加密后结果为:40bd001563085fc35165329ea1ff5c5ecbdbbeef
select sha2('123',512);  --加密后结果为3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c047e7ab1c1eb8b85103e3be7ba613b31bb5c9c36214dc9f14a42fd7a2fdb84856bca5c44c2
select crc32('123');  --加密后结果为:2286445522

5.3 mask()函数

脱敏函数

默认为大写字母为X,小写字母为x,数字为n

举例

select mask('AAbb123'); --默认为大写字母为X,小写字母为x,数字为n 所以结果为XXxxnn

5.4 mask_first_n()函数

只脱敏前几个数

举例

select mask_first_n('AAbb123',4); --结果为XXxx123,只脱敏前四个数

5.5 mask_last_n()函数

只脱敏后几个数

举例

select mask_last_n('AAbb123',4);  --结果为AAbxnnn,只脱敏后四位数

6.其他函数

6.1 current_user()函数

查看当前用户函数

举例

select current_user();  --root

6.2 current_database()函数

查看当前使用的数据库

6.3 version()函数

查看当前Hive版本

  • 44
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值