> 데이터 베이스 > MySQL 튜토리얼 > CLR 함수 없이 SQL Azure에서 여러 행의 문자열을 어떻게 효율적으로 연결할 수 있습니까?

CLR 함수 없이 SQL Azure에서 여러 행의 문자열을 어떻게 효율적으로 연결할 수 있습니까?

Susan Sarandon
풀어 주다: 2025-01-20 09:07:10
원래의
676명이 탐색했습니다.

How Can I Efficiently Concatenate Strings from Multiple Rows in SQL Azure Without CLR Functions?

COALESCE 및 FOR XML을 넘어서: SQL Azure의 효율적인 문자열 집계

여러 SQL 행에서 효율적인 문자열 연결을 원하는 많은 개발자는 특히 CLR 함수를 사용할 수 없는 경우 SQL Azure의 COALESCEFOR XML와 같은 표준 함수의 제한 사항에 직면합니다. 이 문서에서는 강력하고 효율적인 문자열 집계를 위해 CTE(공통 테이블 식)를 사용하는 강력한 Transact-SQL 솔루션을 제시합니다.

해결책: 순차 연결을 위한 재귀 CTE

우리의 접근 방식은 두 가지 CTE를 활용합니다.

  1. Partitioned CTE: ID 열을 기준으로 각 항목에 행 번호를 할당하고 Name 열을 기준으로 알파벳순으로 정렬합니다. 이 중요한 단계는 동일한 ID으로 행을 그룹화하고 일관된 연결 순서를 보장합니다.

  2. Concatenated CTE(재귀): 이 CTE는 연결된 문자열을 반복적으로 작성합니다. FullName 열에 이름을 반복적으로 추가하여 최종 결과를 누적합니다.

그런 다음 기본 쿼리는 각 ID에 대해 행 번호가 가장 높은 행만 선택하여 각 그룹에 대해 전체 집계 문자열을 생성합니다.

세부 분류 및 사용자 정의 옵션

이 방법은 세 가지 핵심 단계로 구성됩니다.

  1. 행 분할 및 번호 매기기: 이는 정확한 연결에 필요한 그룹화 및 순서를 설정합니다.
  2. 재귀 문자열 누적: 재귀 CTE는 FullName 열 내에 집계된 문자열을 효율적으로 구축합니다.
  3. 결과 필터링: 최종 쿼리는 각각의 고유한 ID.
  4. 에 대해 하나씩 연결된 완전한 문자열만 선택합니다.

이 기술은 유연성을 제공합니다. 특정 데이터 구조 및 요구 사항에 맞게 그룹화(이 예에서는 ID) 및 정렬 기준(여기에서는 Name의 알파벳 순서)을 조정할 수 있습니다. 일관된 결과는 그룹화 및 정렬 매개변수 정의에 따라 달라집니다.

예시 및 출력

다음 샘플 데이터를 사용해 보겠습니다.

<code class="language-sql">INSERT dbo.SourceTable (ID, Name)
VALUES 
(1, 'Matt'),
(1, 'Rocks'),
(2, 'Stylus'),
(3, 'Foo'),
(3, 'Bar'),
(3, 'Baz')</code>
로그인 후 복사

쿼리를 실행하면 다음이 생성됩니다.

<code>ID          FullName
----------- ------------------------------
2           Stylus
3           Bar, Baz, Foo
1           Matt, Rocks</code>
로그인 후 복사

이는 여러 행에 걸쳐 효과적인 문자열 연결을 명확하게 보여주며, SQL Azure 문자열 집계 작업을 위한 CLR 함수에 대한 안정적인 대안을 제공합니다.

위 내용은 CLR 함수 없이 SQL Azure에서 여러 행의 문자열을 어떻게 효율적으로 연결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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