簡體   English   中英

Google BigQuery - 有沒有辦法在多個列中搜索值列表。 CONTAINS_SUBSTR 或 REGEXP_CONTAINS 之類的東西

[英]Google BigQuery - is there a way to search multiple columns for a list of values. Something like CONTAINS_SUBSTR or REGEXP_CONTAINS

我正在尋找一種在多列中搜索特定值列表的方法。

這是一些包含 3 列數據的測試數據:

WITH fieldstosearch AS
 (SELECT 'R10.10' as field1, 'R10.11' as field2 , 'R15.11' as field3 UNION ALL
  SELECT 'R10.10', 'R20.3', 'R33.33' UNION ALL
  SELECT 'R20.0', 'R20.1', 'R33.33' UNION ALL
  SELECT 'R10.15', 'R20.4', 'R33.33' UNION ALL
  SELECT 'R10.11', 'R10.10', 'R33.33')

我可以使用 REGEXP_CONTAINS function 使用值列表一次成功搜索 1 列(例如 field1),如下所示:

SELECT REGEXP_CONTAINS(field1, 'R10.10|R07.82|R07.89|R07.9') 
FROM fieldstosearch

我希望可以使用 CONTAINS_SUBSTR function 來搜索“多個”列以獲取像這樣的特定值列表,但語法已關閉/不起作用:

SELECT CONTAINS_SUBSTR((field1, field2, field3), 'R10.10', 'R07.82', 'R07.89', 'R07.9')
FROM fieldstosearch

我可以搜索多個列,使用 1 個搜索字符串/值,如下所示:

SELECT CONTAINS_SUBSTR((field1, field2, field3), 'R10.10')
FROM fieldstosearch

所以似乎有一種方法可以將 select 多個搜索值添加到 CONTAINS_SUBSTR function?

有沒有人有任何技巧/想法可以在 BigQuery 中實現這一點?

謝謝!

您可以使用以下方法

select *,
  regexp_contains(format('%t',(field1, field2, field3)), 'R10.10|R07.82|R07.89|R07.9')
from fieldstosearch 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM