如何从一个字符串列中拆分值

tf7tbtn2  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(396)

我有一个带有字符串列的配置单元表,在一个列中它有许多值,我想将这些值拆分为列。下面是示例列值。

最终结果应该是这样的

我使用了split函数,因为列中的值不在同一个位置,所以我在列中得到了错误的值,有没有基于标记值的函数

7bsow1i6

7bsow1i61#

你需要使用 regexp_extract 功能和保持匹配 regular expression 并提取值。 Regular expression:lanes=>"(.*?)" //literal match for lanes=>" and capture until next following occurance " and keep it in first capture groupExample:with cte as (--sample data select stack(2,string('lanes=>"2","txt_mid"=>"0"'), string('"is_in"=>"parksville"'))as(c1)) select regexp_extract(c1,'lanes=>"(.*?)"',1)lanes, regexp_extract(c1,'"txt_mid"=>"(.*?)"',1)txt_mid from cte;Result: ```
lanes txt_mid
2 0

如果要为丢失的数据记录设置空值,则使用case when then语句检查字段的长度(如果0有) `null` 记录的值。

相关问题