假设有一个表 movie, 其中的数据为
split()函数
那么使用split()的的方法可以将category字段的整体字符串变为数组array类型, 如下:
> select movie, split(category, ",") from movie;
explode()函数
使用explode()函数可以将一行的数组变成多行的, 如下:
> select explode(split(category, ",")) from movie;
那如果想在和电影名称连上, 是不是可以一起输出下面这样的结果呢,
下面试试:
> select movie, explode(split(category, ",")) from movie;
结果报错了, 不可以这样使用
一个select后面只能获得一个explode产生的视图,如果要显示多个列,则需要将多个视图合并。
lateral view就是做这样的事的
lateral view()函数
select movie, tmp_col from movie
lateral view explode(split(category, ",")) tmp_view as tmp_col;