BigQuery:如何检查 column1 的每个字符串元素是否包含在 column2 中?

BigQuery: How do I check for every string element of column1 whether it is contained in column2?

我正在使用 BigQuery。 我的数据是这样的,我从 Table1 和 Table2 开始:

表 1

Str1
"a"
"b"

表2

id Str2
1 "car"
2 "apple"
3 "banana"
4 "bob"

如何设计我的查询以获取 Table3?

如果 Table1 中的值在 Table2.Str2 中找到为子字符串,则它有 Table2.id。

表 3

a b
1 0
2 0
3 3
0 4

谢谢!

考虑以下方法

select * from (
  select id, str1, regexp_contains(str2, str1) contained
  from table2, table1
)
pivot (min(contained) for str1 in ('a', 'b'))        

如果应用于您问题中的示例数据 - 输出为

如果您确实需要输出看起来与您的问题完全一样 - 请使用下面的内容

select if(a, id, 0) a, if(b, id, 0) b from (
  select id, str1, regexp_contains(str2, str1) contained
  from table2, table1
)
pivot (min(contained) for str1 in ('a', 'b'))           

在这种情况下 - 输出是