【发布时间】:2020-09-03 13:49:35
【问题描述】:
PosgreSQL 9.5
字段类型:jsonb
这里是json
{
"options": [
{
"name": "method"
},
{
"name": "flavor"
},
{
"name": "weight",
"value": {
"name": "300g"
}
}
]
}
这里查询从数组中获取索引 = 2 的项目 (weight) 的值:
SELECT
id,
product.data #>'{title,en}' AS title_en,
product.data #>>'{options, 2, value, name }' as options_weight_value
FROM product
很好。它工作正常。
但是权重 可以在数组中的任何索引中的问题。第一个或第二个等等。
所以我需要在节点 "weight" 中获取 name (300g) 的值。 我需要这样的 smt:
SELECT
id,
product.data #>'{title,en}' AS title_en,
product.data #>>'{options, *, value, name, weight }' as options_weight_value
FROM product
有可能吗?
【问题讨论】:
-
你能改变JSON结构吗?做类似
{"method": "...", "flavor": "...", "weight": "300g"}的事情会更有效率 -
@a_horse_with_no_name 不,我无法更改 json。
-
@a_horse_with_no_name 我被添加了我的解决方案
标签: postgresql-9.5