首页 > 解决方案 > bigquery 使用正则表达式连接表

问题描述

我有两个表都有一个名为 host 的列。我想通过主机的某些部分加入这两个表,如下所示:

select * from `config.tested` a
join `config.active` b
on REGEXP_EXTRACT(a.host,  r'.*req-([a-z0-9]{12})')=REGEXP_EXTRACT(b.host,  r'.*req-([a-z0-9]{12})')

有没有更有效的方法?就像USING(REGEXP_EXTRACT(host, r'.*req-([a-z0-9]{12})'))它不起作用

标签: sqlgoogle-bigquery

解决方案


我认为您的逻辑没有问题,但您可以使用left()

ON LEFT(a.host, 16) = LEFT(b.host, 16)

这包括“reg-”以及最终字符串。

如果您仍然需要确保这些值与您想要的模式匹配,请添加:

WHERE REGEXP_CONTAINS(a.host, r'.*req-([a-z0-9]{12})') 

推荐阅读