XML 텍스트 데이터를 필드로 SELECT 또는 테이블 형태로 SELECT하기

반응형

XML 텍스트 데이터를 필드로 SELECT 또는 테이블 형태로 SELECT하기

DECLARE @XML_STRING VARCHAR(MAX)
DECLARE @XML_OBJECT XML
SET @XML_STRING = N'<root><body><no>1</no><data>testData1</data><date>2024-01-03 17:00:00</date></body>
<body><no>2</no><data>testData2</data><date>2021-01-14 17:00:00</date></body></root>'
/* 파싱-1 */
SELECT 
	CONVERT(xml, @XML_STRING).value('(/root/body/no)[1]','varchar(10)') AS no,
	CONVERT(xml, @XML_STRING).value('(/root/body/data)[1]','varchar(100)') AS data,
	CONVERT(xml, @XML_STRING).value('(/root/body/no)[2]','varchar(10)') AS no1,
	CONVERT(xml, @XML_STRING).value('(/root/body/data)[2]','varchar(100)') AS data1
/* 파싱-2 */
/* XML OBJECT로 컨버트 */ 
SET @XML_OBJECT = CONVERT(XML, @XML_STRING)
SELECT 
	x.XmlCol.value('(no/text())[1]', 'VARCHAR(10)') AS no,
	x.XmlCol.value('(data/text())[1]', 'VARCHAR(100)') AS data,
	x.XmlCol.value('(date/text())[1]', 'DATETIME') AS date
FROM @XML_OBJECT.nodes(N'/root/body') AS x(XmlCol)

XML 형태로 저장되어 있는 데이터를 필요한 데이터만 파싱하여 사용하고자 할 때 유용한 쿼리를 공유합니다.

XML 파싱(Parsing) 기법으로 MSSQL 내장함수를 사용합니다.

 

1. STRING 변수를 선언합니다.

2. 오브젝트형 XML 변수를 선언합니다.

3. STRING 변수에 XML 데이터를 삽입합니다.

4. 파싱-1, 파싱-2 쿼리로 필요한 데이터를 필드로 추출하거나 테이블형태로 출력합니다.

 

실행 결과

 

 

반응형