【发布时间】:2018-05-07 10:21:47
【问题描述】:
我有一个 JSON 格式的报告存储在 PostgreSQL 数据库表的一个字段中。 假设(简化的)表格格式是:
Column | Type
-------------------+----------------------------
id | integer
element_id | character varying(256)
report | json
报告中数据的结构是这样的
{
"section1":
"test1": {
"outcome": "nominal",
"results": {
"value1": 34.,
"value2": 56.
}
},
"test2": {
"outcome": "warning",
"results": {
"avg": 4.5,
"std": 21.
}
},
...
"sectionN": {
...
}
}
也就是说,在第一级有 N 个键(sections),每个都是一个带有一组键的对象(tests),每个结果和一组可变的结果,以(key, value) 对的形式。
我需要根据内部 JSON 键进行过滤。更具体地说,在这个例子中,我想知道是否有可能单独使用 SQL 来获取例如 results 部分中的 std 值高于某个阈值的元素,比如说10。我什至可以知道std 在test2,但我不知道先验在哪个部分。例如,使用此过滤器 (test2.std > 10.),将显示带有上述示例数据的记录,因为 test2 测试中的 std 变量的此值等于 21. (>10.)。
另一个更简单的过滤器可能是请求test2.outcome 不是nominal 的所有记录。
【问题讨论】:
标签: json postgresql filter