> 데이터 베이스 > MySQL 튜토리얼 > PostgreSQL에서 배열을 다차원 배열로 효율적으로 결합하려면 어떻게 해야 합니까?

PostgreSQL에서 배열을 다차원 배열로 효율적으로 결합하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2025-01-06 01:11:39
원래의
733명이 탐색했습니다.

How Can I Efficiently Combine Arrays into Multi-Dimensional Arrays in PostgreSQL?

PostgreSQL에서 배열을 다차원 배열로 결합

소개

PostgreSQL은 배열을 효율적으로 결합할 수 있는 다양한 옵션을 제공하여 복잡한 데이터 조작이 가능합니다.

간단한 zip() 함수(동일한 길이) 배열)

길이가 같은 두 배열을 결합하려면 ARRAY[] 생성자와 함께 unnest() 함수를 활용할 수 있습니다.

SELECT ARRAY[a,b] AS ab
FROM (
    SELECT unnest('{a,b,c}'::text[]) AS a, unnest('{d,e,f}'::text[]) AS b
) x;
로그인 후 복사

결과:

  ab
-------
{a,d}
{b,e}
{c,f}
로그인 후 복사

zip() 함수를 다차원 배열로 집계

쌍 요소를 집계하는 경우 다차원 배열로 PostgreSQL은 사용자 정의 집계 함수 array_agg_mult()를 제공합니다:

CREATE AGGREGATE array_agg_mult (anyarray) (
    SFUNC = array_cat,
    STYPE = anyarray,
    INITCOND = '{}'
);
로그인 후 복사

사용:

SELECT array_agg_mult(ARRAY[ARRAY[a,b]]) AS ab
FROM (
    SELECT unnest('{a,b,c}'::text[]) AS a, unnest('{d,e,f}'::text[]) AS b
) x;
로그인 후 복사

결과:

{{a,d},{b,e},{c,f}}
로그인 후 복사
로그인 후 복사

또는, zip2() 함수는 래퍼로 생성될 수 있습니다. array_agg_mult():

CREATE OR REPLACE FUNCTION zip2(anyarray, anyarray)
RETURNS SETOF anyarray LANGUAGE SQL AS
$func$
SELECT array_agg_mult(ARRAY[ARRAY[a,b]])
FROM (SELECT unnest() AS a, unnest() AS b) x;
$func$
로그인 후 복사

사용:

SELECT zip2('{a,b,c}'::text[], '{d,e,f}'::text[]);
로그인 후 복사

결과:

{{a,d},{b,e},{c,f}}
로그인 후 복사
로그인 후 복사

Postgres 9.5(array_agg(배열 표현식))

Postgres 9.5 이상에서는 array_agg(array 표현식) 함수는 배열을 다차원 배열로 직접 결합할 수 있어 사용자 정의 집계 함수에 비해 더 효율적인 솔루션을 제공합니다. 사용법은 array_agg_mult() 함수와 유사합니다.

위 내용은 PostgreSQL에서 배열을 다차원 배열로 효율적으로 결합하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿