MS-SQL XML 속성 네임으로 파싱해서 VALUE 찾기 ( XML attribute 값)
XML 정의
XML(eXtensible Markup Language)은 W3C에서 개발된, 다른 특수한 목적을 갖는 마크업 언어를 만드는데 사용하도록 권장하는 다목적 마크업 언어입니다.
XML은 SGML의 단순화된 부분집합으로, 다른 많은 종류의 데이터를 기술하는 데 사용할 수 있습니다.
XML은 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템끼리 데이터를 쉽게 주고 받을 수 있게 하여 HTML의 한계를 극복할 목적으로 만들어졌습니다.
웹 서비스에서 XML 데이터를 송수신 할 때 태그로 시작하여 태그로 끝나는 마크업 구조로 되어 있는 구조와, 애트리뷰트가 포함된 이름/값 짝으로 이루어진 마크업 구조로도 사용이 가능합니다.
XML 데이터가 DB에 저장되어 있는 경우, 데이터를 파싱해서 SELECT 해야 할 경우가 있습니다.
declare @xml xml =
'<email>
<account language="en" />
</email>'
XML 태그 중 account의 language attribute 값은 "en" 입니다.
이전 글에서는 XML 텍스트 데이터를 필드로 SELECT 하는 방법을 알아보았습니다.
[MSSQL] XML 텍스트 데이터를 필드로 SELECT 또는 테이블 형태로 SELECT하기 (XML To DB)
이 값을 SELECT 하는 방법을 알아볼텐데요.
XMl 데이터를 필드로 SELECT 할 때, XML 데이터의 node로 데이터를 찾았었다면 attribute value는 @를 붙여서 value 값을 찾을 수 있습니다.
select @xml.value('(/email/account/@language)[1]', 'nvarchar(max)')
결과는 account의 attribute language의 값인 "en"이 출력됩니다.