我有一个表说类型,它有一个JSON列,说位置看起来像这样:
{ "attribute":[
{
"type": "state",
"value": "CA"
},
{
"type": "distance",
"value": "200.00"
} ...
]
}
表中的每一行都有数据,并且都有“type”:“state”。我只想从表中的每一行提取“type”:“state”的值,并将其放入一个新列中。我问了几个问题,比如:
但无法让它工作。我不需要查询这个。我需要这个专栏的价值。如果我错过了什么,我事先道歉。
我主要使用Redshift,其中有一个内置函数来做到这一点。所以如果你在那里,请检查一下。redshift文档
Postgres似乎有一个类似的功能集:https://www.postgresql.org/docs/current/static/functions-json.html
我认为您需要将三个功能链接在一起才能实现这一点。
SELECT
your_field::json->'attribute'->0->'value'
FROM
your_table
我尝试的是按键名提取json,然后是按索引提取json数组(如果您的示例与完整数据一致,则总是第一个),最后是按键名提取另一个json数组。
编辑:让它为您的示例工作
SELECT
'{ "attribute":[
{
"type": "state",
"value": "CA"
},
{
"type": "distance",
"value": "200.00"
}
]
}'::json->'attribute'->0->'value'
返回“CA”
第二次编辑:嵌套查询@McNets是正确、更好的答案。但在这次潜水中,我发现你可以在Postgres中嵌套查询!多酷啊!
我将json作为文本字段存储在虚拟表中并成功运行了这个:
SELECT
(SELECT value FROM json_to_recordset(
my_column::json->'attribute') as x(type text, value text)
WHERE
type = 'state'
)
FROM dummy_table
create table t(data json);
insert into t values('{"attribute":[{"type": "state","value": "CA"},{"type": "distance","value": "200.00"}]}'::json);
select elem->>'value' as state
from t, json_array_elements(t.data->'attribute') elem
where elem->>'type' = 'state';
| state | | :---- | | CA |
dbfiddle在这里
问题内容: 最近升级到使用PostgreSQL 9.3.1来利用JSON功能。在我的表中,我有一个json类型列,其结构如下: 就问题而言,这只是伪数据。 是否可以根据id在emails数组中查询特定项目? 差不多:“返回电子邮件,其中id = 123)”? 问题答案: 是的,这是可能的: 是您的表名,是JSON列的名称。
最近升级到使用PostgreSQL 9.3.1来利用JSON功能。在我的表中,我有一个json类型列,其结构如下: 就问题而言,这只是虚拟数据。 是否可以根据id查询电子邮件数组中的特定项目 差不多:“返回id=123的电子邮件)”?
您将如何在存储在列中的数组中搜索元素?(更新:另请参阅列的9.4更新答案。) 如果我有这样一个JSON文档,存储在名为blob的列中: 我想做的是: 并取出所有匹配的行。但这不起作用,因为
我有Oracle表: 数据 Oracle是否支持产生以下输出的查询?--删除重复并将其分组到单个JSON数组中 版本: Oracle数据库12c企业版发布12.2.0.1.0-64位生产
问题内容: 我在postgres json列中有一些类似于下面的json的json。我正在尝试查询它以识别一些输入错误的数据。我基本上是在寻找房屋描述与房屋号码相同的地址。我不太想办法。 我写了这个sql,它将找到数据匹配的地方: 显然,这仅适用于第一所学校的第一地址。有没有办法查询每所学校的所有地址? 问题答案: 在横向联接中使用的次数与要比较的json数组的深度一样多:
问题内容: 我正在尝试测试PostgreSQL 9.3中的类型。 我在名为的表中有一个列。JSON看起来像这样: 我想查询表中所有与“对象”数组中“ src”值匹配的报告。例如,是否可以在数据库中查询所有匹配的报告?我成功地写了一个查询,可以匹配: 但是由于具有一组值,所以我似乎无法编写出有效的东西。是否可以在数据库中查询所有匹配的报告?我已经查看了这些来源,但仍然无法了解: http://www