복붙노트

[SQL] XML의 PATH ( ''), 1,1)에 대한 SELECT의 의미는 ... 무엇입니까?

SQL

XML의 PATH ( ''), 1,1)에 대한 SELECT의 의미는 ... 무엇입니까?

내가 질문 중 하나는 SQL이의 나는 여기 톱 사용법을 배우고, 어떤 몸은 내가 XML 경로 ( '') SQL에서 무엇을 의미하는지 이해 할 수 있습니까? 그래, 내가 웹 페이지를 탐색 꽤 잘 이해하지 못했다!

나는 뒤에 물건을받지하고,이 코드 조각을 수행 지금 무엇? (만 선택 부분)

declare @t table
(
    Id int,
    Name varchar(10)
)
insert into @t
select 1,'a' union all
select 1,'b' union all
select 2,'c' union all
select 2,'d' 

select ID,
stuff(
(
    select ','+ [Name] from @t where Id = t.Id for XML path('')
),1,1,'') 
from (select distinct ID from @t )t

해결법

  1. ==============================

    1.여기 배울 수있는 실제적인 방법은 없습니다. 그것은 하나의 문자열로 데이터의 여러 행을 연결하는 단지 귀여운 트릭이다. 그것은 XML 포맷 기능의 사용 목적보다는 기능을 더 기발한 사용합니다.

    여기 배울 수있는 실제적인 방법은 없습니다. 그것은 하나의 문자열로 데이터의 여러 행을 연결하는 단지 귀여운 트릭이다. 그것은 XML 포맷 기능의 사용 목적보다는 기능을 더 기발한 사용합니다.

    SELECT ',' + ColumnName ... FOR XML PATH('')
    

    콤마 세트 ColumnName 열에있는 데이터의 복수의 열을 조합에 기초하여, 값이 분리 생성한다. 그것은, ABC, DEF, GHI, JKL 같은 값을 생성합니다.

    STUFF(...,1,1,'')
    

    다음 이전 트릭을 생성하는 주요 쉼표를 제거하는 데 사용됩니다, 매개 변수에 대한 자세한 내용은 다도를 참조하십시오.

    (이상하게 많은 사람들이 쉼표가 STUFF 만 트리밍의 최종 비트에 대한 책임이 있음에도 불구하고 "스터프 방법"로 분리 된 값 세트 생성 방법이 참조하는 경향)

  2. ==============================

    2.SQL 당신은 MSSQL에서 문자열 연결에 사용되는 참조되었다.

    SQL 당신은 MSSQL에서 문자열 연결에 사용되는 참조되었다.

    이 결과에 대한 XML로 사용 앞에 붙이는 행을 연결 A, B, C, D. 그런 다음, 따라서 그것을 제거, 그것은을 위해 먼저 대체 재료를 사용하여.

    제 ( '') XML 경로 래퍼 노드를 제거하기 위해 사용되는에 자동으로 생성되고있다. 그렇지 않으면 <행> A, B, C, D 과 같을 것이다.

    ...
    stuff(
      (
      select ',' + CAST(t2.Value as varchar(10)) from #t t2 where t1.id = t2.id 
      for xml path('')
      )
    ,1,1,'') as Value
    ...
    
  3. from https://stackoverflow.com/questions/21623593/what-is-the-meaning-of-select-for-xml-path-1-1 by cc-by-sa and MIT license