考虑以下方法
with patterns as (
select 1 pattern_id, r"[a-z0-9A-Z]{40}" pattern union all
select 2, r"[0-9a-z]{32}" union all
select 3, r"[a-z0-9]{80}" union all
select 4, r"[a-z0-9A-Z\%]{35}"
)
select any_value(t).*, string_agg('' || pattern_id) matches
from Sample_Table t, patterns p
where regexp_contains(content, pattern)
group by format('%t', t)
如果您有更好的列可用于
group by
你应该使用它——例如
select any_value(t.sample_repo_name), string_agg('' || pattern_id) as matches
from `bigquery-public-data.github_repos.sample_contents` t, patterns p
where regexp_contains(content, pattern)
group by id