首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在标准SQL中查询满足某个条件的数组?

如何在标准SQL中查询满足某个条件的数组?
EN

Stack Overflow用户
提问于 2019-04-12 05:18:25
回答 4查看 130关注 0票数 1

我正在尝试拉取其数组仅满足特定条件的记录。

例如,我只想要包含"IAB3“的结果。

下面是该表的外观

表名:

出价

列名:

BidderBanner / WinCat

条目:

代码语言:javascript
复制
1600402 / null
1911048 / null
1893069 / [IAB3-11, IAB3]
1214894 / IAB3

我最初的想法是什么

代码语言:javascript
复制
SELECT * FROM bids WHERE WinCat = "IAB3" 

但我得到一个错误,指出运算符类型数组、字符串不匹配。

数据库在Google Big Query中。

EN

回答 4

Stack Overflow用户

发布于 2019-04-12 09:01:47

下面是针对BigQuery标准SQL的说明

代码语言:javascript
复制
#standardSQL
SELECT * FROM `project.dataset.bids` WHERE 'IAB3' IN UNNEST(WinCat)

您可以使用来自您的问题的样本数据进行测试,如以下示例所示

代码语言:javascript
复制
#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)  

有结果

票数 2
EN

Stack Overflow用户

发布于 2019-04-12 05:21:14

您需要在sql中对所有字符串使用单引号。它应该是WHERE WinCat = 'IAB3‘而不是WHERE WinCat = "IAB3“

票数 1
EN

Stack Overflow用户

发布于 2019-04-12 05:30:21

一种方法使用unnest(),如下所示:

代码语言:javascript
复制
SELECT b.*
FROM bids b
WHERE 'IAB3' IN (SELECT unnest(b.WinCats))

然而,数组语法在支持它们的数据库中有所不同,并且它们不是“标准SQL”的一部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55641327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档