hive—常用的函数整理

1、size(split(...))函数用于计算分割后字符串数组的长度

实例1):由客户编号列表计算客户编号个数

--数据准备
with tmp_test01 as (
select 'tag074445270' tag_id,'202501'busi_mon , '012399931003,012399931000' index_val
union all
select 'tag074445271' tag_id,'202501'busi_mon , '037100006340,030600050969,030600012604' index_val
union all
select 'tag074445271' tag_id,'202501'busi_mon , '' index_val
)

--计算客户编号个数
select tag_id, busi_mon,index_val,
COALESCE(SUM(case when length(trim(index_val)) >0 then size(split(index_val, ',')) else 0 end ), 0) AS index_val_0, --计算结果
size(split(index_val,",")) DD,  --数组长度
split(index_val,",") SS --字符串分隔情况
from tmp_test01
group by tag_id, busi_mon,index_val

注:1、空字符串处理‌:如果分割的字段串是空字符串(例如a=''),size(split(a, ','))的结果为1,因为空字符串被视为一个元素‌;

2、null值处理‌:如果分割的字段串是null(例如a is null),size(split(a, ','))的结果为-1

2、LPAD(string, length, pad_string) :在字符串左侧填充指定字符以达到指定长度的函数

实例1):部门编号补足4位数,客户编号补足12位数

select
LPAD(KH,12,'0')                   as Pty_Id                       --客户当事人编号
,LPAD(YYB,4,'0')                   as Inr_Org_Id                   --内部机构编号
from table_name

3、regexp_replace(N.ch_name, '[^\\u4e00-\\u9fa5]', ''):提取字符串中的中文字

例子1:

--一个字符串字段(例如ch_name )是否包含另一个字符串字段(例如cust_name_ch)的内容

--N.ch_name :浙江久立特材科技股份有限公司

--M.cust_name_ch:浙江久立特材科技股份有限公司回购专用证券账户

where N.ch_name like concat('%',regexp_replace(M.cust_name_ch,'公司.*$','公司'),'%')


where regexp_replace(M.cust_name_ch, '[^\\u4e00-\\u9fa5]', '') like concat('%',regexp_replace(N.ch_name, '[^\\u4e00-\\u9fa5]', ''),'%')

4、字符串反转函数:reverse

语法: reverse(string A)。返回字符串A的反转结果

可以用在加密字段反转字符串之后就可以显示全了,再导出EXCEL反转即可

例子:select reverse('abcdef')  ----fedcba

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值