Hive regexp_extract 从字符串中提取数值

Posted

技术标签:

【中文标题】Hive regexp_extract 从字符串中提取数值【英文标题】:Hive regexp_extract numeric value from a string 【发布时间】:2021-12-29 14:00:46 【问题描述】:

我有一张桌子:

column1                         
A.A=123; B.B=124; C.C=125         
C.C=127     

我正在尝试从表中获取数值。预期的输出是

A -> 123 / B -> 124 等

我正在尝试使用 regexp_extract

有什么建议吗?

【问题讨论】:

总是a.a=1.b.b=4,x.x=55 吗?有没有可能是bob.bob=200 【参考方案1】:

如果分隔符是固定的 - '; '键值对之间和键值之间'=',可以使用str_to_map函数:

select str_to_map('A.A=123; B.B=124; C.C=125','; ','=')['A.A'] as A --returns 123

如果你更喜欢正则表达式:

select 
regexp_extract('A.A=123; B.B=124; C.C=125','A.A=(\\d*)',1) as A, --returns 123
regexp_extract('A.A=123; B.B=124; C.C=125','B.B=(\\d*)',1) as B --returns 124

等等

如果不区分大小写,请在正则表达式中添加 (?i)

select regexp_extract('A.A=123; b.b=124; C.C=125','(?i)B.B=(\\d*)',1) as B --returns 124

【讨论】:

以上是关于Hive regexp_extract 从字符串中提取数值的主要内容,如果未能解决你的问题,请参考以下文章

Hive查询regexp_extract失败

HIVE中regexp_extract用法

Hive 查询以获取字符串中给定键的值

大数据之Hive:regexp_extract函数

regexp_extract 配置单元未按预期工作

hive正则匹配like,rlike,regexp,regexp_replace,regexp_extract