从字符串中提取值并将其作为计算放入另一列中

发布于 2025-01-13 05:39:12 字数 424 浏览 2 评论 0原文

我在 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() 一起使用

I have some strings in a column in Impala like

'class:104;teacher:ted;school:first;subclass:404'
'class:105;teacher:nick;subclass:650;students:400'

I want to do a

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

How can I do it? As you can see it is not positional in order to go with substr()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

攒一口袋星星 2025-01-20 05:39:12

我认为你可以在这里使用 split_part() 。

类 - split_part(split_part(col, 'class:',2),';',1)
subclass - split_part(split_part(col, 'subclass:',2),';',1)

内部拆分将在类单词上拆分并获取第二部分('104;teacher:ted;school:第一;子类: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

I think you can use split_part() here.

class - split_part(split_part(col, 'class:',2),';',1)
subclass - split_part(split_part(col, 'subclass:',2),';',1)

Inner split will split on class word and take second part('104;teacher:ted;school:first;subclass:404'). Then outermost split part will split on ; and pick up first part (104).

Your SQL should be like -

SELECT 
split_part(split_part(col, 'class:',2),';',1) as `class`,
split_part(split_part(col, 'subclass:',2),';',1) as `subclass`
FROM mytab
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文