json
PostgreSQL 9.3で型をテストしようとしています。という表にと呼ばれる列
がありjson
ます。JSONは次のようになります。data
reports
{
"objects": [
{"src":"foo.png"},
{"src":"bar.png"}
],
"background":"background.png"
}
'objects'配列の 'src'値に一致するすべてのレポートのテーブルをクエリしたいと思います。たとえば、一致するすべてのレポートについてDBにクエリを実行することはできます'src' = 'foo.png'
か?に一致するクエリを正常に作成しました"background"
。
SELECT data AS data FROM reports where data->>'background' = 'background.png'
しかし、"objects"
値の配列があるので、私はうまくいくものを書くことができないようです。一致するすべてのレポートについてDBをクエリすることはできます'src' = 'foo.png'
か?私はこれらのソースを調べましたが、それでもまだ取得できません。
- http://www.postgresql.org/docs/9.3/static/functions-json.html
- 新しいPostgreSQL JSONデータ型内のフィールドを使用してクエリするにはどうすればよいですか?
- 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のエキスパートではないので、何が問題なのかわかりません。
jsonb
/ pg 9.4のアップデートを追加。余談ですが、単純なケース(1レベルのネスト)の場合、->
オペレーターはjson
9.3ページのトリックも行います。