PostgreSQL语言|JSONB:获取第一个路径值

tv6aics1  于 2023-03-08  发布在  PostgreSQL
关注(0)|答案(1)|浏览(167)

给定JSON输入:

{
    "name": "John Doe",
    "age": 30,
    "address": {
        "street": "123 Main St",
        "city": "Anytown",
        "state": "CA"
    },
    "phone": 1234567
}

有没有可能(如果有,怎么做?我没能做到)得到第一个exists路径的值。
我试过了:select jsonb_path_query_first(jsonb_data, '$.address.region', '$.phone')希望它会返回1234567,但没有任何成功。
有人帮忙吗?
谢谢

idfiyjo8

idfiyjo81#

可以使用coalesce():

select coalesce(
         jsonb_data #>> '{address,region}', 
         jsonb_data #>> '{phone}'
       )
from the_table;

或者使用JSON路径:

select coalesce(
          jsonb_path_query_first(jsonb_data, '$.address.region'), 
          jsonb_path_query_first(jsonb_data, '$.phone')
       )
from the_table;

相关问题