首页 > 解决方案 > 如何访问 jsonb postgresql 中的键值?

问题描述

{
    "data": {
        "val": "{\"cell_number\": \"123\"}"
    }
}

我想在 data -> val -> cell_number 中获取值,即'123'。有没有办法在 postgresql 中做到这一点?

标签: postgresql

解决方案


如果这不是一个错字,并且您在val键下放置了一个字符串化的 json 对象,那么这将为您解开它:

with invar as (
  select '{
    "data": {
        "val": "{\"cell_number\": \"123\"}"
    }
}'::jsonb as jsonb_col
)
select ((jsonb_col->'data'->>'val')::jsonb)->>'cell_number' from invar;

 ?column? 
----------
 123
(1 row)

第一步让你找到val关键。该结果必须作为text(因此是->>)返回,然后强制转换为,jsonb以便cell_number可以取消引用。


推荐阅读