집 >데이터 베이스 >MySQL 튜토리얼 >PostgreSQL에서 그룹화된 필드의 문자열을 연결하는 방법은 무엇입니까?
PostgreSQL 데이터베이스에서는 특정 필드별로 그룹화하고 각 그룹의 다른 문자열 필드 값을 연결하는 것이 일반적인 요구 사항입니다. 구현 방법은 PostgreSQL 버전에 따라 다릅니다.
PostgreSQL 9.0 이상(2010년부터)에서는 이러한 목적으로 string_agg(expression, delimiter)
기능을 제공합니다. EMPLOYEE
라는 문자열 필드에서 문자열을 연결하려면 다음 쿼리를 사용할 수 있습니다.
<code class="language-sql">SELECT company_id, string_agg(employee, ', ') FROM mytable GROUP BY company_id;</code>
집계 표현식에 ORDER BY
절을 지정하여 값이 연결되는 순서를 제어할 수도 있습니다.
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.4 이전에는 문자열을 연결하는 내장 집계 함수가 없었습니다. 사용자 정의 집계 함수는 CREATE AGGREGATE
문을 사용하여 생성할 수 있습니다:
<code class="language-sql">CREATE AGGREGATE textcat_all( basetype = text, sfunc = textcat, stype = text, initcond = '' );</code>
이 기본 집계 함수는 단순히 그룹의 모든 문자열을 연결합니다. 연결된 값 사이에 구분 기호를 추가하는 사용자 정의 함수를 만들 수도 있습니다. 예를 들면 다음과 같습니다.
<code class="language-sql">CREATE FUNCTION commacat(acc text, instr text) RETURNS text AS $$ BEGIN IF acc IS NULL OR acc = '' THEN RETURN instr; ELSE RETURN acc || ', ' || instr; END IF; END; $$ LANGUAGE plpgsql;</code>
그런 다음 GROUP BY
쿼리에서 사용자 정의 집계 함수를 사용하여 문자열을 연결할 수 있습니다.
<code class="language-sql">SELECT company_id, textcat_all(commacat(NULL, employee)) AS concatenated_employees FROM mytable GROUP BY company_id;</code>
위 내용은 PostgreSQL에서 그룹화된 필드의 문자열을 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!