PostgreSQL中JSON嵌套属性查询返回NULL问题求助
解决PostgreSQL JSON嵌套属性获取返回NULL的问题
问题核心是**Amount是嵌套在TeeTimeReserveRecord子对象中的属性**,你当前的查询直接从ez_links根节点取Amount,自然找不到对应值返回NULL。
正确查询写法
以下几种方式都可以正确获取嵌套的Amount值:
- 链式使用
->操作符(返回JSON类型值):
select ez_links, ez_links->'TeeTimeReserveRecord'->'Amount' AS price FROM bookings limit 1
- 链式使用
->>操作符(返回文本类型值,适合直接使用数值的场景):
select ez_links, ez_links->'TeeTimeReserveRecord'->>'Amount' AS price FROM bookings limit 1
- 使用
#>路径操作符(通过路径数组访问嵌套属性,返回JSON类型值):
select ez_links, ez_links#>'{TeeTimeReserveRecord, Amount}' AS price FROM bookings limit 1
操作符说明
->:提取JSON对象属性,返回JSON类型(本例中会返回"662")->>:提取JSON对象属性,直接返回文本类型(本例中会返回662)#>:通过指定路径数组(格式{父节点,子节点}),直接定位嵌套的JSON属性
执行上述任意语句后,price列都会返回你期望的662值。
内容的提问来源于stack exchange,提问作者STUART Hayes
相关产品推荐
相关产品推荐

