집 >데이터 베이스 >MySQL 튜토리얼 >CLR 함수 없이 SQL Server의 여러 행에서 문자열을 효율적으로 연결하는 방법은 무엇입니까?
SQL Server의 고성능 문자열 연결: CLR 제한 우회
여러 행의 문자열을 단일 문자열로 집계하는 것은 SQL Server에서 자주 수행되는 작업입니다. COALESCE
, FOR XML PATH
같은 방법이 존재하지만 효율성 측면에서 부족한 경우가 많습니다. 이는 CLR 기능에 대한 지원이 부족하여 일반적인 고성능 솔루션이 제거된 SQL Azure에서 특히 그렇습니다.
효과적인 대안: 재귀적 CTE 접근 방식
강력하고 효율적인 대안은 재귀적 공통 테이블 표현식(CTE)을 활용합니다. 이 기술에는 다음과 같은 주요 단계가 포함됩니다.
이 방법은 명시적인 그룹화 및 정렬을 통해 일관된 결과를 보장합니다.
실제 구현:
다음은 재귀 CTE를 사용한 샘플 구현입니다.
<code class="language-sql">WITH Partitioned AS ( SELECT ID, Name, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Name) AS NameNumber, COUNT(*) OVER (PARTITION BY ID) AS NameCount FROM dbo.SourceTable ), Concatenated AS ( SELECT ID, CAST(Name AS nvarchar(max)) AS FullName, Name, NameNumber, NameCount FROM Partitioned WHERE NameNumber = 1 UNION ALL SELECT P.ID, CAST(C.FullName + ', ' + P.Name AS nvarchar(max)), P.Name, P.NameNumber, P.NameCount FROM Partitioned AS P INNER JOIN Concatenated AS C ON P.ID = C.ID AND P.NameNumber = C.NameNumber + 1 ) SELECT ID, FullName FROM Concatenated WHERE NameNumber = NameCount;</code>
이 재귀 CTE는 특히 CLR 기능을 사용할 수 없는 환경에서 SQL Server의 문자열 연결을 위한 확장 가능하고 효율적인 솔루션을 제공합니다. 잠재적으로 큰 연결 문자열을 처리하려면 nvarchar(max)
을 사용하세요.
위 내용은 CLR 함수 없이 SQL Server의 여러 행에서 문자열을 효율적으로 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!