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
9.4 페이지 에 대한 업데이트를 추가했습니다 . 참고 : 간단한 경우 (1 단계 중첩)의 경우->
연산자는json
9.3 페이지에 대한 트릭도 수행합니다 .