sql - 查询深度 JSONb 信息 - PostgreSQL
问题描述
我将以下 JSON 数组存储在一行中:
{
"openings": [
{
"visibleFormData": {
"productName": "test"
}
}
]
}
我正在尝试获取productName
. 到目前为止,我已经尝试过这样的事情:
SELECT tbl.column->'openings'->'0'->'visibleFormData'->>'productName'
理论上,这将获取openings
数组中的第一个对象(索引 0),然后productName
从该对象的visibleFormData
对象中获取属性。
不过,我得到的只是空值。我已经尝试了多种配置。我认为这与抓取索引零有关,但我不确定。我不是普通的 PSQL 用户,所以调试起来有点棘手。
解决方案
json 数组索引是integer
,所以使用0
而不是'0'
:
with tbl(col) as (
values
('{
"openings": [
{
"visibleFormData": {
"productName": "test"
}
}
]
}'::jsonb)
)
SELECT tbl.col->'openings'->0->'visibleFormData'->>'productName'
FROM tbl
?column?
----------
test
(1 row)
推荐阅读
- scala - 我无法在 scala-shell 中加载 myfile.scala
- java - arrayList 似乎仅在首先完成一项活动而不是另一项活动时才创建
- c# - 如何在 C# 中使用 XML 创建注册和登录表单?
- angular - 抽象类中与另一个类有关系的反序列化问题
- netbeans - Win10卸载NB9.0
- asp.net-core - ASP.NET Core url 仅重写域
- java - getLargePrime Java 循环
- reactjs - 找不到反应包中的离子模态控制器
- r - 如何更改 selectInput 中选项的名称以避免使用 URL 作为选项?
- r - 计算两个特定行之间的行数