我正在尝试提取仅满足特定条件的记录。
例如,我只想要包含“ IAB3”的结果。
这是桌子的样子
出价
BidderBanner / WinCat
1600402 / null
1911048 / null
1893069 / [IAB3-11, IAB3]
1214894 / IAB3
我最初的想法是
SELECT * FROM bids WHERE WinCat = "IAB3"
但是出现一个错误,提示操作符类型数组,字符串不匹配。
该数据库位于Google Big Query中。
答案 0 :(得分:2)
以下是用于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)
有结果
答案 1 :(得分:1)
您需要在sql中为所有字符串使用单引号。应该是WHERE WinCat ='IAB3'而不是WHERE WinCat =“ IAB3”
答案 2 :(得分:1)
一种方法使用unnest()
,如下所示:
SELECT b.*
FROM bids b
WHERE 'IAB3' IN (SELECT unnest(b.WinCats))
但是,数组语法在支持它们的数据库之间有所不同,它们不属于“标准SQL”。
答案 3 :(得分:0)
这将起作用:
SELECT * FROM bids WHERE REGEXP_LIKE (WinCat, '(.)*(IAB3)+()*');