Sql 在postgres json字段中查询json键

Sql 在postgres json字段中查询json键,sql,json,postgresql,postgresql-9.2,Sql,Json,Postgresql,Postgresql 9.2,假设我在Postgres中存储了JSON字段中的“数据”,如下所示 { "CUSTA": { "name": "Customer A", }, "CUSTB": { "name": "Customer B", }, "CUSTC": { "name": "Customer C", } } 如何查询以返回包含键“CUSTA”的记录?或者更好的是“CUSTA”的价值,即名称:Customer A 尝试这

假设我在Postgres中存储了JSON字段中的“数据”,如下所示

{
    "CUSTA": {
        "name": "Customer A",
    },
    "CUSTB": {
        "name": "Customer B",
    },
    "CUSTC": {
        "name": "Customer C",
    }
}
如何查询以返回包含键“CUSTA”的记录?或者更好的是“CUSTA”的价值,即名称:Customer A

尝试这样做,但显然我不能使用关键字键

SELECT * FROM invoices WHERE data->>key = 'CUSTA';
注意:name:customer x后面有尾随逗号,这不是正确的json。对于您的查询,您可能会执行以下操作:

select data#>>'{CUSTA}' from invoices;
或者,如果数据还不是json字段:

select data::json#>>'{CUSTA}' from invoices;
我不明白为什么任何发票都会有不止一个客户


-g

谢谢,行得通,实际上不是发票,而是客户表。这就是实际的sql语句——从客户处选择data::json>>“{CUSTA}”;顺便说一句,如果我想获得包含所有字段的行,我该怎么做呢?这可以从客户处选择id、company_id、data::json>>“{CUSTA}”;但是它在{CUSTA}后面有一个未知的列?column?add as mycolumn来重命名该列,比如:select id,company_id,data::json>>“{CUSTA}”as mycolumn from customers;
select data::json#>>'{CUSTA}' from invoices;