Sql 在postgres json字段中查询json键
假设我在Postgres中存储了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 尝试这
{
"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;