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 从字符串中提取数值的主要内容,如果未能解决你的问题,请参考以下文章