Google bigquery 如何在BigQuery中解析regex和sum中的整数值

Google bigquery 如何在BigQuery中解析regex和sum中的整数值,google-bigquery,Google Bigquery,我有一个包含复杂字符串的列,我正在尝试从这个字符串列中提取值。这是临时表和值- with temp as ( select 1 as event_id, ';t-Tew00;1;1.00;252=100.00,;SM-R190;1;1.00;252=200.00,;SM-G998B/DS;1;6347.00;252=300.00,;EF-PG99P;1;249.00;252=400.00' as event_list union all select 2 as event_id

我有一个包含复杂字符串的列,我正在尝试从这个字符串列中提取值。这是临时表和值-

with temp as  (
    select 1 as event_id, ';t-Tew00;1;1.00;252=100.00,;SM-R190;1;1.00;252=200.00,;SM-G998B/DS;1;6347.00;252=300.00,;EF-PG99P;1;249.00;252=400.00' as event_list union all
    select 2 as event_id, ';asdI-Tww5300;1;1.00;252=99.00,,;EP-TA845;.252=49.00' as event_list union all
    select 3 as event_id, ';asdI-Tww5300;1;1.00;252=10.00,,;EP-TA845;,.252=20.00,:etw:1002:2020,'
)
select *
from temp 
event\u list
列中出现
252=
之后,我想提取出所有
double/int
值。例如,在第一条记录中,我想提取值
100.00200.00300.00和400.00

我想在输出中添加一个单独的列,它将
将所有这些值添加到一起。因此,第一条记录的输出列将为1000.00。同样,第二条记录为
99+49
,第三条记录为
10+20

如果没有出现
252=
这样的外观,则输出必须为0

我如何在BigQuery中实现这一点?请尝试下面的方法

select event_id, 
  (
    select ifnull(sum(cast(value as float64)), 0) 
    from unnest(regexp_extract_all(event_list, r'252=(\d*.?\d*)')) value
  ) as total_252
from temp         
如果应用于问题中的样本数据-输出为


谢谢@Mikhail的回答,即使在没有模式的情况下,它也能起作用。我试图让它在那些极端的情况下工作,我运行了这个查询-
select event\u id,event\u list,cast(ifnull(regexp\u replace(extracted,“252=”,“”),“0”)作为float64)作为temp的产品数量,unnest(regexp\u EXTRACT\u ALL(event\u list,'252=[0-9.]+'))作为extracted
,但效果不太好。很高兴它对你有用。考虑投票,然后接受:O)谢谢,我做到了。