我有如下所示的示例数据,我想显示所有项目名称,而不仅仅是通过传递索引来显示一个项目名称,因为数组的大小在每一列中都是未知的。
通过尝试下面的 sql 仅获取“project1”。需要同时连接项目 1 和项目 2。
WITH dataset AS (
SELECT '{"name": "Bob Smith",
"org": "engineering",
"projects": [{"name":"project1", "completed":false},{"name":"project2", "completed":true}]}'
AS myblob
)
SELECT json_extract_scalar(myblob, '$.projects[0].name') AS project_name
FROM dataset`
期望项目 1 和项目 2 串联在一起。
`project_name
project1,project2`
json_query
,它比 json_extract
有更好的 JSON 路径支持:
SELECT json_query(myblob, 'lax $.projects[*].name' WITH ARRAY WRAPPER) projects
FROM dataset;
输出:
projects
-------------------------
["project1","project2"]