我正在尝试拉取其数组仅满足特定条件的记录。
例如,我只想要包含"IAB3“的结果。
下面是该表的外观
表名:
出价
列名:
BidderBanner / WinCat
条目:
1600402 / null
1911048 / null
1893069 / [IAB3-11, IAB3]
1214894 / IAB3
我最初的想法是什么
SELECT * FROM bids WHERE WinCat = "IAB3"
但我得到一个错误,指出运算符类型数组、字符串不匹配。
数据库在Google Big Query中。
发布于 2019-04-12 09:01:47
下面是针对BigQuery标准SQL的说明
#standardSQL
SELECT * FROM `project.dataset.bids` WHERE 'IAB3' IN UNNEST(WinCat)
您可以使用来自您的问题的样本数据进行测试,如以下示例所示
#standardSQL
WITH `project.dataset.bids` AS (
SELECT 1600402 BidderBanner, NULL WinCat UNION ALL
SELECT 1911048, NULL UNION ALL
SELECT 1893069, ['IAB3-11', 'IAB3'] UNION ALL
SELECT 1214894, ['IAB3']
)
SELECT * FROM `project.dataset.bids` WHERE 'IAB3' IN UNNEST(WinCat)
有结果
发布于 2019-04-12 05:21:14
您需要在sql中对所有字符串使用单引号。它应该是WHERE WinCat = 'IAB3‘而不是WHERE WinCat = "IAB3“
发布于 2019-04-12 05:30:21
一种方法使用unnest()
,如下所示:
SELECT b.*
FROM bids b
WHERE 'IAB3' IN (SELECT unnest(b.WinCats))
然而,数组语法在支持它们的数据库中有所不同,并且它们不是“标准SQL”的一部分。
https://stackoverflow.com/questions/55641327
复制相似问题