>데이터 베이스 >MySQL 튜토리얼 >PostgreSQL에서 JSON 배열 내의 요소를 쿼리하는 방법은 무엇입니까?

PostgreSQL에서 JSON 배열 내의 요소를 쿼리하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-15 10:17:44222검색

How to Query Elements Within JSON Arrays in PostgreSQL?

PostgreSQL의 JSON 배열에 있는 쿼리 요소

소개

SQL은 JSON 데이터의 저장을 효과적으로 처리할 수 있습니다. 이 문서에서는 PostgreSQL의 JSON 개체에 저장된 배열을 쿼리하는 방법에 중점을 둘 것입니다.

JSON 중첩 배열 쿼리

"data"라는 JSON 열에 개체 배열이 포함되어 있다고 가정합니다. 작업은 "objects" 배열에서 특정 "src" 값과 일치하는 모든 레코드를 검색하는 것입니다.

측면 조인 및 중첩 해제를 사용한 쿼리

Postgres는 JSON 배열을 확장하기 위해 json_array_elements() 함수를 제공합니다. 측면 조인과 결합하면 원하는 결과를 얻을 수 있습니다.

<code class="language-sql">SELECT *
FROM reports r, json_array_elements(r.data->'objects') obj
WHERE obj->>'src' = 'foo.png';</code>

이 쿼리는 각 JSON 배열 요소에 대한 측면 조인을 생성하여 obj 열이 배열의 각 개체를 나타낼 수 있도록 합니다.

PostgreSQL 9.4의 대안

PostgreSQL 9.4 이상의 경우 향상된 JSON 처리 기능을 활용할 수 있습니다.

<code class="language-sql">SELECT * FROM reports WHERE data->'objects' @> '[{"src":"foo.png"}]';</code>

이 쿼리에서 "@>" 연산자는 배열에 지정된 개체가 포함되어 있는지 확인합니다. JSON 배열 구조와 일치하도록 검색어를 대괄호로 묶어야 합니다.

요약

JSON 유형의 배열을 쿼리하려면 json_array_elements()를 사용하여 배열을 확장하고 측면 조인을 수행할 수 있습니다. PostgreSQL 9.4 이상의 경우 효율적인 일치를 위해 일치하는 GIN 인덱스와 함께 향상된 "@>" 연산자를 사용할 수 있습니다. 두 방법 모두 배열 요소 값을 기반으로 특정 레코드를 검색할 수 있습니다.

위 내용은 PostgreSQL에서 JSON 배열 내의 요소를 쿼리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.