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
'programing' 카테고리의 다른 글
C 조건부 연산자('?')(두 번째 매개 변수가 비어 있음) (0) | 2023.07.07 |
---|---|
C++ 프로그램 내에 C 헤더 포함 (0) | 2023.07.07 |
B-트리 대 비트맵 데이터베이스 인덱스 (0) | 2023.07.02 |
Spring-Boot 실행 데이터.하나의 프로파일에서만 sql (0) | 2023.07.02 |
Vue에서 계산된 개체를 변경하는 방법은 무엇입니까? (0) | 2023.07.02 |