一尘不染

在postgres json字段中查询json键

sql

假设我在Postgres中存储了这样的JSON字段,称为“渄ata”。

{
    "CUSTA": {
        "name": "Customer A",
    },
    "CUSTB": {
        "name": "Customer B",
    },
    "CUSTC": {
        "name": "Customer C",
    }
}

如何查询以返回包含键“ USTA”的记录?甚至更好的“ USTA”值,即“名称”:“客户A”

试图做这样的事情,但显然我不能使用关键字键

SELECT * FROM invoices WHERE data->>key = 'CUSTA';

阅读 150

收藏
2021-05-16

共1个答案

一尘不染

select '{
    "CUSTA": {
        "name": "Customer A"
    },
    "CUSTB": {
        "name": "Customer B"
    },
    "CUSTC": {
        "name": "Customer C"
    }
}'::json#>>'{CUSTA}';
           ?column?
------------------------------
 {                           +
         "name": "Customer A"+
     }
(1 row)

注意:name:customer x后跟逗号,这不是正确的json。对于您的查询,您可能会执行以下操作:

select data#>>'{CUSTA}' from invoices;

或者,如果数据还不是json字段:

select data::json#>>'{CUSTA}' from invoices;

我不明白为什么任何一张发票都会有一个以上的客户。

-G

2021-05-16