从字符串中提取一个值并将其作为值放在另一列中
Extract a value from a string and put it as calue in another column
我在 Impala
的一列中有一些字符串,例如
'class:104;teacher:ted;school:first;subclass:404'
'class:105;teacher:nick;subclass:650;students:400'
我想做一个
case when info like '%class%' then substr(info,6,3) end as class
case when info like '%subclass%' then **<Here to take the value of the subclass>** end as subclass
我该怎么做?如您所见,它不是为了与 substr()
一起使用的位置
我想你可以在这里使用 split_part()。
class - split_part(split_part(col, 'class:',2),';',1)
subclass - split_part(split_part(col, 'subclass:',2),';',1)
内部拆分将拆分 class 个单词并取第二部分 ('104;teacher:ted;school:first;subclass:404')。然后最外面的分裂部分将分裂;并拿起第一部分 (104)。
你的 SQL 应该是 -
SELECT
split_part(split_part(col, 'class:',2),';',1) as `class`,
split_part(split_part(col, 'subclass:',2),';',1) as `subclass`
FROM mytab
我在 Impala
的一列中有一些字符串,例如
'class:104;teacher:ted;school:first;subclass:404'
'class:105;teacher:nick;subclass:650;students:400'
我想做一个
case when info like '%class%' then substr(info,6,3) end as class
case when info like '%subclass%' then **<Here to take the value of the subclass>** end as subclass
我该怎么做?如您所见,它不是为了与 substr()
一起使用的位置我想你可以在这里使用 split_part()。
class - split_part(split_part(col, 'class:',2),';',1)
subclass - split_part(split_part(col, 'subclass:',2),';',1)
内部拆分将拆分 class 个单词并取第二部分 ('104;teacher:ted;school:first;subclass:404')。然后最外面的分裂部分将分裂;并拿起第一部分 (104)。
你的 SQL 应该是 -
SELECT
split_part(split_part(col, 'class:',2),';',1) as `class`,
split_part(split_part(col, 'subclass:',2),';',1) as `subclass`
FROM mytab