programing

SELECT의 의미는 무엇입니까...XML PATH(' ', 1, 1)의 경우?

topblog 2023. 7. 7. 18:26
반응형

SELECT의 의미는 무엇입니까...XML PATH(' ', 1, 1)의 경우?

저는 질문 중 하나에서 sql을 배우고 있는데 여기서 이것의 사용법을 보았습니다. 누군가 제가 sql에서 xml 경로(')가 무엇을 의미하는지 이해하게 해주실 수 있나요? 그리고 네, 저는 그것을 잘 이해하지 못했습니다!

나는 뒤에 있는 것을 이해하지 못합니다. 이제 이 코드 조각은 무엇을 합니까? (만 해당)select부분)

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

여기서 배울 수 있는 진짜 기술은 없습니다.여러 행의 데이터를 하나의 문자열로 연결하는 것은 귀여운 속임수일 뿐입니다.의도된 사용보다는 기능의 기발한 사용입니다.XML서식 지정 기능.

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

에서 여러 행의 데이터를 결합하여 쉼표로 구분된 값 집합을 생성합니다.ColumnName기둥.다음과 같은 값을 생성합니다.,abc,def,ghi,jkl.

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

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

(이상하게도, 많은 사람들은 쉼표로 구분된 값 집합을 생성하는 이 방법을 다음과 같은 방법에도 불구하고 "STUFF 방법"이라고 부르는 경향이 있습니다.STUFF최종 트리밍 부분만 책임짐)

참조한 SQL은 다음에서 문자열 연결에 사용됩니다.MSSQL.

앞에 추가하여 행을 연결합니다.,사용.for xml path결과적으로,a,b,c,d사용 중stuff먼저 대체합니다.,위해서따라서 제거합니다.

('')for xml path자동으로 생성되는 래퍼 노드를 제거하는 데 사용됩니다.그렇지 않으면 다음과 같이 보일 것입니다.<row>,a,b,c,d</row>.

...
stuff(
  (
  select ',' + CAST(t2.Value as varchar(10)) from #t t2 where t1.id = t2.id 
  for xml path('')
  )
,1,1,'') as Value
...

언급URL : https://stackoverflow.com/questions/21623593/what-is-the-meaning-of-select-for-xml-path-1-1

반응형