> 데이터 베이스 > MySQL 튜토리얼 > 여러 행에서 SQL Server의 단일 문자열로 텍스트를 연결하는 방법은 무엇입니까?

여러 행에서 SQL Server의 단일 문자열로 텍스트를 연결하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-25 18:12:09
원래의
450명이 탐색했습니다.

How to Concatenate Text from Multiple Rows into a Single String in SQL Server?

SQL Server는 여러 줄의 텍스트를 단일 줄 문자열로 병합

다양한 데이터베이스 시나리오에서는 여러 행의 문자열 값을 일관된 단일 문자열로 결합해야 할 수도 있습니다. 이는 다양한 데이터 포인트의 정보를 종합적인 요약 또는 표시로 결합해야 할 때 특히 유용합니다.

문제 설명

다음 세 행이 포함된 "Names"라는 테이블을 생각해 보세요.

  • 피터
  • 메리

도전

목표는 이러한 개별 줄을 쉼표로 구분된 단일 문자열인 "Peter, Paul, Mary"로 변환하는 것입니다.

솔루션

SQL Server 2017 및 Azure SQL Database에서는 STRING_AGG() 함수를 사용하여 이 작업을 수행할 수 있습니다. STRING_AGG()의 구문은 다음과 같습니다.

<code class="language-sql">STRING_AGG(<expression> [ , delimiter ] [ ORDER BY <expression> [ ASC | DESC ] ])</code>
로그인 후 복사

우리 시나리오에서는 표현식이 이름 열이고 구분 기호는 쉼표입니다. ORDER BY 절은 이름이 특정 순서(즉, 알파벳 순서)로 표시되도록 합니다.

SQL 쿼리

<code class="language-sql">SELECT STRING_AGG(Name, ', ') AS ConcatenatedNames
FROM Names
ORDER BY Name;</code>
로그인 후 복사

출력

<code>ConcatenatedNames
---------------------
Peter, Paul, Mary</code>
로그인 후 복사

이전 SQL Server 버전을 위한 대체 솔루션

SQL Server 2005 등 이전 버전의 SQL Server를 사용하는 경우 다음 방법을 사용할 수 있습니다.

<code class="language-sql">SELECT
    (
        SELECT StudentName + ',' AS [text()]
        FROM dbo.Students
        WHERE SubjectID = Main.SubjectID
        ORDER BY StudentID
        FOR XML PATH('')
    ).value('text()[1]', 'nvarchar(max)') AS Students
FROM
    (
        SELECT DISTINCT SubjectID
        FROM dbo.Students
    ) AS Main;</code>
로그인 후 복사

위 내용은 여러 행에서 SQL Server의 단일 문자열로 텍스트를 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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