Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

In SQL Server, qual è il modo migliore per determinare se una determinata stringa è un XML valido o meno?

Forse non è necessario verificare la presenza di XML valido. Potresti verificare la presenza dell'appropriato xml tagga con charindex in una dichiarazione case ed estrai il messaggio di errore usando substring .

Ecco un esempio con una stringa XML semplificata, ma penso che tu abbia un'idea.

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

Risultato:

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