我有一张桌子叫Shipments
:
CREATE TABLE shipments
(
shipmentId numeric,
metadata jsonb
);
在metaData
列内可以存在一个名为 JSON 对象的数组,stops
其名称可能如下所示:
{
"stops": [
{
"stopId": 1,
"stopType": "Origin"
},
{
"stopId": 2,
"stopType": "Destionation"
},
{
"stopId": 3,
"stopType": "Transit"
}
]
}
我正在尝试查询整个表并获取所有不同的stopType
值。我可以通过这个简单的查询获得数组stopType
中第一个索引的所有不同值:stops
select distinct metadata->'stops'->0->>'stopType' from shipments
这几乎给了我我需要的东西:
╔══════════╗
║ stopType ║
╠══════════╣
║ Origin ║
╚══════════╝
但我想要的是:
╔══════════════╗
║ stopType ║
╠══════════════╣
║ Origin ║
║ Destination ║
║ Transit ║
╚══════════════╝
在此先感谢您的帮助!
使用
jsonb_array_elements_text
:当您使用 JsON 和 JSONB 时,您应该尝试了解有关该数据类型的更多信息
db<>在这里摆弄