[英]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.