[MSSQL] XML 텍스트 데이터를 필드로 SELECT 또는 테이블 형태로 SELECT하기 (XML to DB)



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

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


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

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

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

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

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


- 실행결과


* 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
작성자 소개
최찬희 프로필
WrapUp 블로거

최찬희

반려견을 좋아하고, 차를 좋아하고, 여행을 좋아하고, 맛집을 찾아 즐기는 웹 개발자 입니다^^

댓글작성

작성자의 다른 포스팅