在我的表中,有一列JSON
类型包含描述时间偏移的对象数组:
[
{
"type": "start"
"time": 1.234
},
{
"type": "end"
"time": 50.403
}
]
我知道我可以用JSON_EACH()
and提取这些JSON_EXTRACT()
:
CREATE TEMPORARY TABLE Items(
id INTEGER PRIMARY KEY,
timings JSON
);
INSERT INTO Items(timings) VALUES
('[{"type": "start", "time": 12.345}, {"type": "end", "time": 67.891}]'),
('[{"type": "start", "time": 24.56}, {"type": "end", "time": 78.901}]');
SELECT
JSON_EXTRACT(Timings.value, '$.type'),
JSON_EXTRACT(Timings.value, '$.time')
FROM
Items,
JSON_EACH(timings) AS Timings;
这将返回一个类似的表:
start 12.345
end 67.891
start 24.56
end 78.901
我真正需要的是:
- 查找特定类型的时间。(查找数组中与条件匹配的第一个对象。)
- 获取此数据并将其选择为与表的其余部分一起的列。
换句话说,我正在寻找一个看起来像这样的表:
id start end
-----------------------------
0 12.345 67.891
1 24.56 78.901
我希望有这样的查询:
SELECT
id,
JSON_EXTRACT(timings, '$.[type="start"].time'),
JSON_EXTRACT(timings, '$.[type="end"].time')
FROM Items;
有没有办法在 JSON 函数中使用路径来选择我需要的东西?或者,以其他方式将我在第一个示例中的内容应用于表格?