t-sql: Konvertiere varchar nach xml

8

Ich habe einige gültige und ungültige XML-Werte in einer varchar-Spalte gespeichert.

Ich möchte die gültigen XML-Werte in den tatsächlichen xml-Datentyp umwandeln und ungültige Nullen.

Was ist ein guter Weg, dies zu tun?

Etwas wie:

%Vor%     
David 30.07.2013, 16:41
quelle

3 Antworten

4

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 .

    
Question3CPO 30.07.2013 21:06
quelle
2

Versuchen Sie, sp_xml_preparedocument -

zu verwenden %Vor%

Ausgabe -

%Vor%     
Devart 31.07.2013 07:22
quelle
0

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:

%Vor%

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:

%Vor%

Beide Möglichkeiten ergeben eine bessere Leistung, wenn Sie eine SQL function für jede Abfrage übergeben.

    
christiandev 30.07.2013 18:33
quelle