Hive regexp_extract 来自字符串的数值
Hive regexp_extract numeric value from a string
我有一个 table 作为:
column1
A.A=123; B.B=124; C.C=125
C.C=127
我正在尝试从 table 中获取数值。预期输出为
A -> 123 / B -> 124 等等
我正在尝试使用 regexp_extract
有什么建议吗?
如果分隔符是固定的 - '; '键值对之间和键值对之间的'=',可以使用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
我有一个 table 作为:
column1
A.A=123; B.B=124; C.C=125
C.C=127
我正在尝试从 table 中获取数值。预期输出为
A -> 123 / B -> 124 等等
我正在尝试使用 regexp_extract
有什么建议吗?
如果分隔符是固定的 - '; '键值对之间和键值对之间的'=',可以使用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