爲什麼投它呢?只需將它們插入臨時表中的XML列並運行Xquery以將它們與其他表進行比較。編輯:包括比較的例子。有很多種方法可以對XML運行查詢以獲得相同的行 - 查詢寫入的方式取決於首選項,需求等。我使用/ count作爲簡單組,但是可以使用自連接,WHERE EXISTS
針對正在搜索重複項的列,您將其命名。
CREATE TABLE #Test (SomeXML NVARCHAR(MAX))
CREATE TABLE #XML (SomeXML XML)
INSERT #Test (SomeXML)
VALUES('<root><book b="b" c="c" a="a"/></root>')
,('<root><book a="a" b="b" c="c"/></root>')
INSERT #XML (SomeXML)
SELECT SomeXML FROM #Test;
WITH XMLCompare (a,b,c)
AS
(
SELECT
x.c.value('@a[1]','char(1)') AS a
,x.c.value('@b[1]','char(1)') AS b
,x.c.value('@c[1]','char(1)') AS c
FROM #XML
CROSS APPLY SomeXMl.nodes('/root/book') X(C)
)
SELECT
a
,b
,c
FROM XMLCompare as a
GROUP BY
a
,b
,c
HAVING COUNT(*) >1
來源
2011-09-15 16:22:25
Wil
比較XML不僅僅是語法上的,而是基於XML文本表示的實際**含義**實際上是相當棘手的業務。我非常懷疑你可以在SQL Server中輕鬆完成這個任務 - 很可能你必須使用一個應用程序來解析和解釋XML,以確定它是相同的還是不同的。一個簡單的文本比較將不容易或足夠...... –
請不要嘗試在sql中滾動您自己的XML解析器。使用可以從您選擇的語言中使用的已建立的一個。 –