>데이터 베이스 >MySQL 튜토리얼 >Oracle에서 GROUP_CONCAT 기능을 달성하는 방법은 무엇입니까?

Oracle에서 GROUP_CONCAT 기능을 달성하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-15 12:28:44480검색

How to Achieve GROUP_CONCAT Functionality in Oracle?

Oracle의 그룹 조인 작업

MySQL의 GROUP_CONCAT 함수는 여러 행의 그룹화된 값을 문자열로 연결할 수 있습니다. Oracle에는 정확히 동등한 기능이 없지만 유사한 기능을 달성하는 방법에는 여러 가지가 있습니다.

Oracle 11g 이상에서는 LISTAGG를 사용합니다

Oracle 11g에서는 값을 쉼표로 구분된 문자열로 집계하는 LISTAGG 함수를 도입했습니다.

SELECT 
    col1,
    LISTAGG(col2, ', ') WITHIN GROUP (ORDER BY col2) AS names
FROM table_x
GROUP BY col1

Oracle 10g 이하 버전에서는 맞춤 기능을 사용합니다

Oracle 10g 이하의 경우 사용자 정의 함수를 생성할 수 있습니다.

CREATE OR REPLACE FUNCTION get_comma_separated_value (input_val IN NUMBER)
  RETURN VARCHAR2
IS
  return_text VARCHAR2(10000) := NULL;
BEGIN
  FOR x IN (SELECT col2 FROM table_name WHERE col1 = input_val) LOOP
    return_text := return_text || ',' || x.col2;
  END LOOP;
  RETURN LTRIM(return_text, ',');
END;
/

사용방법:

SELECT col1, get_comma_separated_value(col1) FROM table_name

참고: 일부 이전 Oracle 버전에서는 지원되지 않는 기능 WM_CONCAT이 있습니다.

MySQL의 대체 방법(비교용)

MySQL에서는 GROUP_CONCAT 함수를 사용할 수 있습니다:

SELECT col1, GROUP_CONCAT(col2) FROM table_name GROUP BY col1

위 내용은 Oracle에서 GROUP_CONCAT 기능을 달성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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