[英]BigQuery's query filter by json type
我的数据库表如下。
排 | 名称 | 信息 |
---|---|---|
1个 | 汤姆 | {"count":0, "error":[0,"failed",0]} |
2个 | 乔 | {"count":0, "error":["failed","failed","failed"]} |
3个 | 乔 | {"count":0, "error":[0,0,0]} |
4个 | 汤姆 | {"count":0, "error":["failed","failed",0]} |
我希望按以下顺序按“Info.error's array”过滤数据。
结果数据
排 | 名称 | 信息 |
---|---|---|
1个 | 汤姆 | {"count":0, "error":[0,"failed",0]} |
3个 | 乔 | {"count":0, "error":[0,0,0]} |
4个 | 汤姆 | {"count":0, "error":["failed","failed",0]} |
那么,应该怎样输入SQL这个语法呢? 非常感谢。
为了找出 json 数组中特定值的数量,您可以使用以下代码片段:
(SELECT
COUNTIF(JSON_EXTRACT_SCALAR(error) = "0")
FROM
UNNEST(JSON_EXTRACT_ARRAY(ex_table.Info, '$.error')) AS error ) count_zeros,
(SELECT
COUNTIF(JSON_EXTRACT_SCALAR(error) = "failed")
FROM
UNNEST(JSON_EXTRACT_ARRAY(ex_table.Info, '$.error')) AS error ) count_failed
使用这两个新变量,您可以创建实际的过滤器。
1.
WHERE
count_zero = ARRAY_LENGTH(Info.error)
WHERE
NOT count_failed = ARRAY_LENGTH(Info.error)
WHERE
count_zero > 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.