之前小白有写过一篇文章是高效的解析字符串,里面讲到过一个方法:lateral view explode
最近小白发现,这个函数在使用时,还是有一些坑的,这里小白做一个总结。
在正常解析一个有值的字符串时,用lateral view explode是完全ok的,但是,当遇到该字符串为空时,如果在使用该函数,就会导致该条记录消失。具体场景如下:
sid | filterlist |
---|---|
46 | NULL |
这时,用lateral view explode解析:
select a.sid
,b.filtertype --筛选类型
,b.filtername --筛选内容
,b.filtertitle --筛选子类型
,b.filtersubtype --来源:1搜索;2筛选;3url传参
,b.filterid --筛选id
from (select sid,filterlist
from dw_htlbizdb.tmp_hotel_list_bottom01
lateral view explode(split(filterlist,'\\;'))t as flist
)a
lateral view json_tuple(flist,'filtername') b as
filtername
where sid = 49
;