sql - 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})'))
它不起作用
解决方案
我认为您的逻辑没有问题,但您可以使用left()
:
ON LEFT(a.host, 16) = LEFT(b.host, 16)
这包括“reg-”以及最终字符串。
如果您仍然需要确保这些值与您想要的模式匹配,请添加:
WHERE REGEXP_CONTAINS(a.host, r'.*req-([a-z0-9]{12})')
推荐阅读
- node.js - 读取二维码作为缓冲区并保存在 Excel 中
- excel - 如何在我的数据输入表单中正确使用 excel 数据类型?
- android - 为什么在指定 onClickListener 之前 onTouchListener 不报告 MotionEvent.ACTION_UP?
- python - Python没有附加到列表
- javascript - 用于审核页面 DOM 中重复 ID 的快速 javascript
- haskell - 为什么像'mod'这样的运算符上有引号?
- postgresql - AWS Aurora Postgres 12 设置排序规则
- java - 以编程方式为自定义 Spring Boot 启动器定义 RequestMappings
- android - Canvas.drawText() 更改不同尺寸图像的文本大小
- xcode - 使用 SwiftUI 2.0 在 Xcode 13 中编译资产目录错误