>데이터 베이스 >MySQL 튜토리얼 >PostgreSQL에서 배열을 어떻게 결합할 수 있나요?

PostgreSQL에서 배열을 어떻게 결합할 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2025-01-05 13:59:45602검색

How Can I Combine Arrays in PostgreSQL?

PostgreSQL에서 배열 결합: 종합 가이드

소개

PostgreSQL은 배열을 조작하기 위한 다양한 방법을 제공합니다. 일반적인 작업 중 하나는 동일한 길이의 두 배열을 요소 쌍으로 결합하는 것입니다. 이 문서에서는 PostgreSQL 버전과 특정 사용 사례를 고려하여 이 작업을 달성하기 위한 다양한 접근 방식을 살펴봅니다.

단일 차원 출력을 위한 배열 압축

PostgreSQL 9.5 이상

PostgreSQL 9.5에는 array_agg(배열 표현식)가 도입되어 여러 항목을 연결할 수 있습니다. 배열을 하나의 고차원 배열로 만듭니다. 이 기능은 배열 조합 작업을 단순화하여 사용자 정의 집계 함수가 필요하지 않습니다.

SELECT array_agg(ARRAY[a, b]) AS ab
FROM unnest('{a,b,c}'::text[]) AS a, unnest('{d,e,f}'::text[]) AS b;

PostgreSQL 9.4

PostgreSQL 9.5 이전에는 unnest( )를 ROWS FROM으로 사용합니다.

SELECT ARRAY[a, b] AS ab
FROM unnest('{a,b,c}'::text[], '{d,e,f}'::text[])
AS tmp(a, b);

압축 다차원 출력을 위한 배열

배열을 다차원 배열로 결합해야 하는 경우 사용자 정의 집계 함수가 필요합니다.

CREATE OR REPLACE FUNCTION array_agg_mult(anyarray)
RETURNS SETOF anyarray LANGUAGE SQL AS
$func$
  SELECT ARRAY[ARRAY[a, b]]
  FROM unnest() AS unnest1(a, b);
$func$;
SELECT array_agg_mult(ARRAY[ARRAY[a, b]]) AS ab
FROM unnest('{a,b,c}'::text[]) AS a, unnest('{d,e,f}'::text[]) AS b;

일반화 Zip 함수

다음 함수는 임의의 배열을 압축하는 일반화된 접근 방식을 제공합니다. 유형:

CREATE OR REPLACE FUNCTION zip(anyarray, anyarray)
RETURNS SETOF anyarray LANGUAGE SQL AS
$func$
  SELECT array_agg_mult(ARRAY[ARRAY[a, b]])
  FROM unnest() AS unnest1(a, b)
  JOIN unnest() AS unnest2(a, b)
    ON true;
$func$;

사용 시나리오

이 문서에 제시된 예는 배열 결합에 대한 다양한 시나리오를 보여줍니다.

  • 간단한 압축: 배열을 요소 쌍으로 결합(단일 차원) 출력).
  • 다차원 압축: 배열을 2차원 배열로 결합합니다.
  • 일반화 압축: 모든 유형의 배열을 결합하고 세트

결론

PostgreSQL은 버전과 원하는 출력 형식에 따라 배열을 결합하기 위한 다양한 옵션을 제공합니다. 이 기사에서는 사용 가능한 접근 방식을 포괄적으로 다루므로 특정 요구 사항에 가장 적합한 방법을 선택할 수 있습니다.

위 내용은 PostgreSQL에서 배열을 어떻게 결합할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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