SELECT… FOR XML PATH ( ''), 1,1)의 의미는 무엇입니까?
나는 질문 중 하나에서 sql을 배우고 있으며 여기 에서 이것의 사용법을 보았고, 어떤 본문이 SQL에서 xml path ( '')가 무엇을 의미하는지 이해할 수 있습니까? 그리고 네, 웹 페이지를 탐색하면서 잘 이해하지 못했습니다!
나는 뒤에 물건을 얻지 못하고 있습니다.이 코드는 무엇을합니까? (단지 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 방법"이라고 부르는 경향이 있습니다 STUFF
. 그러나 마지막 부분의 트리밍 만 담당합니다.)
참조한 SQL은에서 문자열 연결에 사용됩니다 MSSQL
.
결과에 ,
using 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
'program tip' 카테고리의 다른 글
div 대신 HTML5 시맨틱 태그를 사용하는 이유는 무엇입니까? (0) | 2020.12.25 |
---|---|
Mysql Workbench GUI에서 테이블 내용을 보는 방법은 무엇입니까? (0) | 2020.12.25 |
ErrorType을 NSError로 변환하면 관련 객체가 손실됩니다. (0) | 2020.12.25 |
--save 플래그는 npm install로 무엇을합니까? (0) | 2020.12.25 |
WPF 사용자 인터페이스를 테스트하는 방법은 무엇입니까? (0) | 2020.12.25 |