2011-01-13 10 views
7

Gibt es eine Möglichkeit zum Vergleichen von Variablen oder Spalten von XML in SQL Server 2008, die sich vom Vergleich eines VARCHAR, das aus dem XML-Wert erstellt werden kann, unterscheidet? Einige Hash-Mechanismen?SQL Server 2008: Wie XML zu vergleichen?

Zum Beispiel:

declare @xml1 xml = '<Xml1/>' 
declare @xml2 xml = '<Xml2/>' 
select case when @xml1 = @xml2 then 1 else 0 end 

Antwort

12
select case when cast(@xml1 as nvarchar(max)) = cast(@xml2 as nvarchar(max)) then 1 else 0 end 
+0

Ich habe das gerade ausprobiert. Es läuft gut. Ignoriert Unterschiede im Whitespace, worüber ich mich Sorgen machte. Ich habe zwei XML-Variablen verglichen, die abgesehen von ein paar Einrückungen auf identische XML-Werte festgelegt wurden, und der Vergleich ergab "true". Nachdem jedoch der Textwert eines Elements in einem von ihnen geändert wurde, gab der Vergleich nun den Wert false zurück. –

+0

scheint Problem mit Leerzeichen – Slava

+0

@Slava auf welche Weise? –