>데이터 베이스 >MySQL 튜토리얼 >PostgreSQL '그룹별' 쿼리 내에서 문자열을 연결하는 방법은 무엇입니까?

PostgreSQL '그룹별' 쿼리 내에서 문자열을 연결하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-22 08:41:09871검색

How to Concatenate Strings within a PostgreSQL `group by` Query?

PostgreSQL group by 쿼리

에서 문자열 필드 연결

PostgreSQL 데이터베이스에서 데이터를 처리할 때 group by 쿼리의 특정 필드에 대한 문자열을 연결해야 할 수도 있습니다. 이는 PostgreSQL 버전에 따라 다양한 방법으로 달성할 수 있습니다.

PostgreSQL 9.0 이상

최신 PostgreSQL 버전(2010년 이후 출시)은 string_agg(expression, delimiter) 기능을 제공합니다. 이 함수를 사용하면 group by 쿼리에서 지정된 구분 기호로 구분된 문자열을 연결할 수 있습니다.

예를 들어 각 COMPANY_ID 그룹의 EMPLOYEE 필드를 조인하려면 다음 쿼리를 사용할 수 있습니다.

<code class="language-sql">SELECT company_id, string_agg(employee, ', ')
FROM mytable
GROUP BY company_id;</code>

PostgreSQL 8.4.x

PostgreSQL 8.4에서는 array_agg(expression) 집계 함수를 사용하여 값을 배열로 수집할 수 있습니다. 그런 다음 array_to_string() 함수를 사용하여 배열을 연결된 문자열로 변환할 수 있습니다.

<code class="language-sql">SELECT company_id, array_to_string(array_agg(employee), ', ')
FROM mytable
GROUP BY company_id;</code>

PostgreSQL 8.3.x 이하 버전

이전 PostgreSQL 버전에는 문자열 연결을 위한 내장 집계 함수가 없습니다. 한 가지 사용자 정의 구현에는 textcat 함수를 사용하여 사용자 정의 집계 함수를 생성하는 작업이 포함됩니다.

<code class="language-sql">CREATE AGGREGATE textcat_all(
  basetype    = text,
  sfunc       = textcat,
  stype       = text,
  initcond    = ''
);</code>

또한 Null 값이나 빈 문자열을 무시하는 등 특정 요구 사항을 처리하기 위해 사용자 지정 연결 함수를 만들 수 있습니다.

<code class="language-sql">CREATE FUNCTION commacat_ignore_nulls(acc text, instr text) RETURNS text AS $$
  BEGIN
    IF acc IS NULL OR acc = '' THEN
      RETURN instr;
    ELSIF instr IS NULL OR instr = '' THEN
      RETURN acc;
    ELSE
      RETURN acc || ', ' || instr;
    END IF;
  END;
$$ LANGUAGE plpgsql;</code>

이 기능을 사용하면 다음과 같이 쿼리를 수정할 수 있습니다.

<code class="language-sql">SELECT company_id, commacat_ignore_nulls(employee)
FROM mytable
GROUP BY company_id;</code>

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

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