Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Dans SQL Server, quel est le meilleur moyen de déterminer si une chaîne donnée est un XML valide ou non ?

Il n'est peut-être pas nécessaire de vérifier le XML valide. Vous pouvez vérifier la présence du xml approprié balise avec charindex dans une instruction case et extrayez le message d'erreur en utilisant substring .

Voici un exemple avec une chaîne XML simplifiée mais je pense que vous avez compris.

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

Résultat :

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