T-SQL: Wie Vergleiche ich zwei Variablen vom Typ XML bei der Länge > VarChar(MAX)?

Nur mithilfe von SQL Server 2008 R2 (dies wird in einer stored proc), wie kann ich feststellen, ob zwei Variablen des Typs XML sind äquivalent?

Hier ist, was ich tun will:

DECLARE @XmlA   XML
DECLARE @XmlB   XML

SET @XmlA = '[Really long Xml value]'
SET @XmlB = '[Really long Xml value]'

IF @XmlA = @XmlB
    SELECT 'Matching Xml!'

Aber wie Sie wahrscheinlich wissen, gibt es:

Msg 305, Ebene 16, Status 1, Zeile 7 Der XML-Datentyp kann nicht sein
verglichen oder sortiert, außer bei der Verwendung von IS NULL-operator.

Kann ich umwandeln VarChar(MAX) und vergleichen, aber das nur vergleicht die ersten 2MB. Gibt es einen anderen Weg?

Meinst du die ersten 2 GB? Ist XML wirklich größer als 2MB? Tun Sie wirklich wissen müssen, wenn es gleich ist? Wenn dem so ist, kann es besser sein, zu tun, der Vergleich, die außerhalb von SQL Server.
Hat Ihr gewünschten Vergleich behandeln <e /> gleich <e></e> ?
VARCHAR(MAX) können bis zu 2 GB von Daten (150x die Größe Tolstois Krieg und Frieden) - und Ihre XML ist größer als dieser!?!?!?
Sie können nicht speichern von XML - > 2 GB, das entspricht varchar(max). Aber streng genommen sollte es sein, varbinary(max)

InformationsquelleAutor ScottBai | 2012-01-26

Schreibe einen Kommentar