【发布时间】:2025-12-06 17:45:01
【问题描述】:
我在通过 json 数组过滤时遇到问题:
WITH table AS ( SELECT *
FROM UNNEST([
'{"class" : {"students" : [{"type" : "a", "name":"David"},{"type" : "b", "name":"Max"}]}}',
'{"class" : {"students" : [{"type": "b", "name":"Jamie"},{"type" : "a", "name":"Martin"}]}}',
'{"class" : {"students" : [{"type" : "a", "name":"Julie"}, {type: "b""name": "Jamie"}]}}'
]) AS json_payload)
所以有一个 json 数组,我试图过滤并获取所有类型 ='a' 的名称。每个数组只能有 1 个 type='a'
我目前的解决方案是:
SELECT
CASE
WHEN JSON_VALUE(json_payload,'$.class.students[0].type') ='a'
THEN JSON_VALUE(json_payload,'$.class.students[0].name')
WHEN JSON_VALUE(json_payload,'$.class.students[1].type') ='a'
THEN JSON_VALUE(json_payload,'$.class.students[1].name')
END AS myName
FROM table
我在想是否有比这个更好/更清洁的解决方案
谢谢!
【问题讨论】:
标签: google-bigquery