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