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'))
在这种情况下 - 输出是
我正在使用 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'))
在这种情况下 - 输出是