xsl을 사용하여 쉼표 구분 기호로 자식 노드의 내부 텍스트를 가져오고 싶습니다.
코드에서 자식 노드 요소를 지정할 수 없습니다.
예:
<aff id = "affa"> <org> <orgname> <nameelt> 응용 화학과 </ nameelt> <nameelt> 도쿄 메트로폴리탄 대학 도시 환경 과학 대학원 </ nameelt> </ orgname> </ org> <address> <addrelt> 하치 오지 미나미 오사와 </ addrelt> <city> 도쿄 192-0397 </ city> <country> 일본 </ country> </ address> <email> [email protected] </ email> </ aff>
내 코드는
SELECT
REPLACE(Element.value('(.)[1]','NVARCHAR(MAX)'), CHAR(10), '') AS address
FROM @xml.nodes('aff') Datalist ( Element );
예상 출력 :
도쿄 도립 대학 도시 환경 과학 대학원 응용 화학과, 도쿄도 하치 오지 미나미 오사와 192-0397 ... like this
다음과 같이 시도하십시오.
DECLARE @xml XML=
N'<aff id="affa">
<org>
<orgname>
<nameelt>Department of Applied Chemistry</nameelt>
<nameelt>Graduate School of Urban Environmental Sciences, Tokyo Metropolitan University</nameelt>
</orgname>
</org>
<address>
<addrelt>Minamiohsawa, Hachioji</addrelt>
<city>Tokyo 192-0397</city>
<country>Japan</country>
</address>
<email>[email protected]</email>
</aff>';
-쿼리는 .nodes()
모든 <nameelt>
요소 를 가져 오는 데 사용 합니다 . 사용 FOR XML PATH('')
하면 결과가 하나의 긴 쉼표로 구분 된 문자열로 반환되고 STUFF
마지막으로 선행 쉼표가 잘립니다.
SELECT STUFF(
(
SELECT ', ' + n.value(N'text()[1]','nvarchar(max)')
FROM @xml.nodes(N'/aff/org/orgname/nameelt') AS A(n)
FOR XML PATH(''),TYPE
).value(N'text()[1]','nvarchar(max)'),1,2,'');
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다