在postgres json字段中查询json密钥

时间:2014-05-16 14:16:15

标签: sql json postgresql postgresql-9.2

假设我在Postgres中存储了名为“data”的JSON字段,就像这样

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

如何查询返回包含密钥“CUSTA”的记录?甚至更好的是“CUSTA”的价值,即"姓名":"客户A"

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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

我不明白为什么任何发票都会有多个客户。

-g