XML은 본질이다
연결된 문자열을 추가하면 "경로 요소"가 손실됩니다.
예를 들어이 작업을 수행하는 경우 :
SELECT t.type + '/' AS type
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML PATH('');
SELECT t.type + '/'
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML PATH('type');
당신은 이것을 다시 얻는다 :
<type>Green/</type>
<type>Blue/</type>
<type>Red/</type>
열 이름 또는 별명은 경로 요소 역할을합니다.
도움이 될 수있는 다른 예
사용 RAW, ELEMENTS
SELECT t.type + '/'
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML RAW, ELEMENTS;
SELECT t.type + '/' AS type
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML RAW, ELEMENTS;
첫 번째 예에서는 일반적인 "행"요소 이름을 얻지 만 두 번째 예에서는 행 / 유형을 얻습니다.
사용시 RAW, TYPE
:
SELECT t.type + '/' AS type
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML RAW, TYPE;
SELECT t.type + '/'
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML RAW, TYPE;
첫 번째 쿼리는 유효한 XML을 반환하고 두 번째 쿼리는 경로 요소에 식별자가 없기 때문에 오류를 발생시킵니다.
을 사용 AUTO
하면 테이블 별칭과 열 이름이 경로로 바뀝니다.
SELECT type + '/' AS type
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML AUTO;
SELECT type
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML AUTO;
그러나 별칭이 없으면 비슷한 오류가 발생합니다.
SELECT type + '/'
FROM ( VALUES ( 'Green' ), ( 'Blue' ), ( 'Red' )) AS t ( type )
FOR XML AUTO;
나는 예를 들어 FOR XML EXPLICIT
보았지만 지금 술을 마시기 시작하는 것은 무책임한 일입니다.