XML Сравнение (строка) на SQL сервере - PullRequest
0 голосов
/ 06 января 2020

У меня есть две XML строки в двух отдельных таблицах.

**ROOT**

**Node ID=** 1

**name** vignesh **/name**

**street** 1211 **/street**

**/Node**


**Node ID=** 2

**name** ram **/name**

**street** 333 **/street**

**/Node**

**/ROOT**

**ROOT**

**Node ID=** 1

**name** newbie **/name**

**street** 121223 **/street**

**/Node**


**Node ID=** 2

**name** pro **/name**

**street** 445**/street**

**/Node**

**/ROOT**

Пожалуйста, помогите мне найти сравнение между этими двумя XML-файлами в SQL Сервер и дать результат в виде старого значения и нового значения для ID1 и ID2 (узел).

1 Ответ

0 голосов
/ 06 января 2020

Я верю, что это поможет вам. я строю правильную XML структуру, учитывая ваши XML данные.

DECLARE @XMLString1 XML =
'<ROOT>
  <Nodes>
    <NodeID>1</NodeID>
    <name>vignesh </name>
    <street>1211</street>
  </Nodes>
  <Nodes>
    <NodeID>2</NodeID>
    <name>ram</name>
    <street>333</street>
  </Nodes>
</ROOT>' ,

@XMLString2 XML =
'<ROOT>
  <Nodes>
    <NodeID>1</NodeID>
    <name>newbie </name>
    <street>121223</street>
  </Nodes>
  <Nodes>
    <NodeID>2</NodeID>
    <name>pro</name>
    <street>445</street>
  </Nodes>
</ROOT>'

SELECT @XMLString1,@XMLString2

;WITH XMLDATA1 AS 
    (
    SELECT T.X.value('NodeID[1]','varchar(50)') AS NODEID,
           T.X.value('name[1]','varchar(50)') AS NAME,
           T.X.value('street[1]','varchar(50)') AS STREET
     FROM @XMLString1.nodes('/ROOT/Nodes')T(X)
    )
,XMLDATA2 AS 
    (
    SELECT T.X.value('NodeID[1]','varchar(50)') AS NODEID,
           T.X.value('name[1]','varchar(50)') AS NAME,
           T.X.value('street[1]','varchar(50)') AS STREET
     FROM @XMLString2.nodes('/ROOT/Nodes')T(X)
    )
    SELECT X1.NODEID,X1.NAME AS OLD_NAME,X2.NAME AS NEW_NAME , X1.STREET AS OLD_STREET , X2.STREET AS NEW_STREET
    FROM XMLDATA1 X1
    INNER JOIN XMLDATA2 X2 ON X1.NODEID=X2.NODEID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...