提问人:Amr Elkady 提问时间:11/15/2023 最后编辑:Bill KarwinAmr Elkady 更新时间:11/16/2023 访问量:34
从数组 JSON 中选择元素范围
select range of element from array json
问:
SELECT JSON_EXTRACT(data, '$.rows[*]') AS name from my_table ;
数据列是json列,包含行作为数组元素需要从行中选择一系列元素[如分页]
尝试直接从数据库进行分页以选择例如大小为 25 的第一页,然后是第二页,但从第一页的最后一页开始。
编号 | 数据 |
---|---|
1 | {“rows”:[{“name”:“name_1”},{“name”:“name_2”},{“name”:“name_3”},{“name”:“name_4”}]} |
答:
0赞
Bill Karwin
11/16/2023
#1
这是一个解决方案:
SELECT JSON_OBJECT('rows', JSON_ARRAYAGG(JSON_OBJECT('name', t.name))) AS data
FROM (
SELECT j.name
FROM my_table
CROSS JOIN JSON_TABLE(my_table.data, '$.rows[*]' COLUMNS (
ord FOR ORDINALITY,
name VARCHAR(20) PATH '$.name'
)
) AS j
WHERE j.ord BETWEEN 1 and 25
) AS t;
对参数使用不同的数字来获取数组的其他“页面”。BETWEEN
如果这看起来太复杂,那么您应该将数据存储在普通的行和列中,而不是 JSON。
评论