Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was ist in SQL Server der beste Weg, um festzustellen, ob eine bestimmte Zeichenfolge ein gültiges XML ist oder nicht?

Möglicherweise ist es nicht erforderlich, auf gültiges XML zu prüfen. Sie könnten das Vorhandensein des entsprechenden xml überprüfen tag mit charindex in einer case-Anweisung und extrahieren Sie die Fehlermeldung mit substring .

Hier ist ein Beispiel mit einer vereinfachten XML-Zeichenfolge, aber ich denke, Sie verstehen, worauf es ankommt.

declare @T table(ID int, Col1 nvarchar(1000))

insert into @T values
(1, 'No xml value 1'),
(2, 'No xml value 2'),
(3, '<root><item>Text value in xml</item></root>')

select
  case when charindex('<item>', Col1) = 0
  then Col1
  else
    substring(Col1, charindex('<item>', Col1)+6, charindex('</item>', Col1)-charindex('<item>', Col1)-6)
  end  
from @T

Ergebnis:

No xml value 1
No xml value 2
Text value in xml