Nur als Antwort darauf:
Ja, aber das Thema meiner Frage ist, wie überprüfe ich, ob XML gültig ist der erste Ort?
Ist Ihr XML ungültig in dem Sinne, dass Sie eine Pause wie in der zweiten Zeile darunter bekommen:
%Vor% Eine Lösung, die ich sehe, ist ein reihenweiser Ansatz, in dem Sie CAST
eine Zeile als XML
versuchen, und wenn sie als XML
konvertiert wird, fügen Sie die gültige Zeile in eine Tabelle mit gültigem% co_de ein % -Werte, wird der Wert nicht korrekt umgesetzt, wird der Wert nicht eingefügt. Siehe diesen Thread für Beispiele .
Wenn Sie das XML beibehalten müssen, unabhängig davon, ob es gültig oder ungültig ist, könnten Sie ein Flag in der Tabelle haben wie IsValid (bit)
. Der Ladevorgang könnte dann eine einmalige Überprüfung dieser Daten durchführen, um zu prüfen, ob der XML-Code gültig ist, und das Flag basierend auf dem Ergebnis setzen. Auf diese Weise können Sie das gültige XML mithilfe der Abfrage abrufen:
Wenn Sie kein ungültiges XML speichern müssen, lehnen Sie es einfach während des Ladens ab, indem Sie das Feld auf NULL
setzen, damit die Abfrage wie folgt aussieht:
Beide Möglichkeiten ergeben eine bessere Leistung, wenn Sie eine SQL function
für jede Abfrage übergeben.
Tags und Links sql-server xml-parsing sql-server-2008 tsql