CS/sql

SQL Server XML 사용법 알아보자.

isaac.kim 2023. 12. 19.
728x90
반응형

SQL Server XML 사용법 알아보자.

평소에는 SQL Server에서 XML을 사용하진 않는데 이번에 XML을 사용할 일이 생겨 알아보게 되었다.

복잡한 내용은 제외하고 간단히 확인하고, 사용 방법에 대해서 알아보자.

 

반응형

SQL Server XML Type

SQL Server (MS SQL) 에서 데이터 타입 중 xml 데이터 타입이 있다.

 

xml 타입에 대해 테스트를 진행해보자.

 

먼저 XML 테스트를 진행할 테이블을 만든다.

 

인덱스 KEY 필드 idx, XML 사용 테스트할 필드 xml 데이터 형식은 xml 이다.

테이블명은 XML_TEST로 만들었다.

 

테스트로 다음의 값을 넣는다.

INSERT INTO XML_TEST VALUES (1,'')
INSERT INTO XML_TEST VALUES (2,'X')
INSERT INTO XML_TEST VALUES (3,'<') -- ERROR

공백이나 일반 문자도 들어간다.

 

SQL Server에서 데이터 타입이 xml인 Column에 대해서 데이터 형식을 체크하기 때문에

완성되지 않은 태그 '<'  값만 넣을 경우는 오류를 발생시킨다. 완성되지 않은 xml이기 때문이다.

 

즉, 태그가 제대로 갖추어져 있어야 한다. Open 태그가 있으면, Close 태그가 있어야 한다.

* <example></example> ( O )

* <example></example ( X )

 

위 테스트를 통해서 SQL Server에서 xml 데이터 형식, 구문 체크를 한다는 것을 알 수 있다.

table 조회 결과

 

 

 

XML 데이터에서 값 파싱하기

다음과 같은 값을 테이블에 넣자.

 

'<root><test><data>HELLO</data></test></root>'

 

위 XML 구문에서 가운데의 HELLO만 빼오도록 하자.

 

SELECT XML.value(N'(root/test/data/text())[1]', 'varchar(10)') AS DATA
FROM (
	SELECT XML FROM XML_TEST
	WHERE IDX = 4
) AS A

 

 

문자열로 선언한 뒤에 파싱하기

DECLARE @XML XML = '<root><test><data>HELLO</data></test></root>'
SELECT x.xmlcol.value('(data/text())[1]', 'varchar(10)') as DATA
FROM @XML.nodes(N'/root/test') as x(xmlcol)

 

 

테이블 혹은 리스트와 같은 구조로 되어 있을 때 파싱

DECLARE @XML XML = 
'<root>
<test><data>HELLO</data></test>
<test><data>WOLRD</data></test>
</root>'
SELECT
x.xmlcol.value('(test/data/text())[1]', 'varchar(10)') as DATA1,
x.xmlcol.value('(test/data/text())[2]', 'varchar(10)') as DATA2
FROM @XML.nodes(N'/root') as x(xmlcol)

대괄호 [1], [2]는 인덱스 번호로 볼 수 있다. (0이 아닌 1부터 시작)

 


이제 xml 데이터를 저장하고 꺼내어 사용할 수 있을 것이다.

 

728x90
반응형