>데이터 베이스 >MySQL 튜토리얼 >이전 Oracle 버전에는 MySQL의 GROUP_CONCAT에 해당하는 LISTAGG가 있습니까?

이전 Oracle 버전에는 MySQL의 GROUP_CONCAT에 해당하는 LISTAGG가 있습니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-15 12:19:45126검색

Is There a LISTAGG Equivalent in Older Oracle Versions to MySQL's GROUP_CONCAT?

Oracle의 MySQL용 GROUP_CONCAT에 해당하는 것이 있나요?

질문:

Oracle에서 지정된 열의 여러 값을 쉼표로 구분된 단일 문자열로 연결하는 방법은 무엇입니까? 입력 데이터는 특정 형식을 따르며 원하는 출력은 각 고유 키에 대한 값을 그룹화하고 연결해야 합니다.

정답:

Oracle 11g 이상:

LISTAGG 기능 사용:

<code class="language-sql">SELECT 
    col1,
    LISTAGG(col2, ', ') WITHIN GROUP (ORDER BY col2) "names"
FROM table_x
GROUP BY col1</code>

Oracle 10g 이하:

한 가지 방법은 사용자 정의 함수를 만드는 것입니다.

<code class="language-sql">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;
/</code>

사용방법:

<code class="language-sql">SELECT col1, get_comma_separated_value(col1) FROM table_name</code>

참고: 11g 이전 Oracle 버전은 WM_CONCAT 함수에 대한 지원이 제한되어 있지만 잠재적인 문제로 인해 사용이 중단되었습니다(자세한 내용은 Oracle 설명서 참조).

MySQL(참고용):

GROUP_CONCAT 기능 사용 가능:

<code class="language-sql">SELECT col1, GROUP_CONCAT(col2) FROM table_name GROUP BY col1</code>

위 내용은 이전 Oracle 버전에는 MySQL의 GROUP_CONCAT에 해당하는 LISTAGG가 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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