【发布时间】:2014-05-09 07:49:52
【问题描述】:
我正在尝试在 PostgreSQL 9.3 中测试 json 类型。
我在名为reports 的表中有一个名为data 的json 列。 JSON 看起来像这样:
{
"objects": [
{"src":"foo.png"},
{"src":"bar.png"}
],
"background":"background.png"
}
我想在表中查询与“objects”数组中的“src”值匹配的所有报告。例如,是否可以在数据库中查询与'src' = 'foo.png' 匹配的所有报告?我成功写了一个可以匹配"background"的查询:
SELECT data AS data FROM reports where data->>'background' = 'background.png'
但由于"objects" 有一个值数组,我似乎无法写出有效的东西。是否可以在数据库中查询与'src' = 'foo.png' 匹配的所有报告?我已经查看了这些来源,但仍然无法得到它:
- http://www.postgresql.org/docs/9.3/static/functions-json.html
- How do I query using fields inside the new PostgreSQL JSON datatype?
- http://michael.otacoo.com/postgresql-2/postgres-9-3-feature-highlight-json-operators/
我也尝试过这样的事情,但无济于事:
SELECT json_array_elements(data->'objects') AS data from reports
WHERE data->>'src' = 'foo.png';
我不是 SQL 专家,所以我不知道自己做错了什么。
【问题讨论】:
标签: sql json postgresql jsonb lateral