sql >> Base de Datos >  >> RDS >> Sqlserver

En SQL Server, ¿cuál es la mejor manera de determinar si una cadena determinada es un XML válido o no?

Quizás no sea necesario comprobar si hay un XML válido. Puede verificar la presencia del xml apropiado etiqueta con charindex en una declaración de caso y extraiga el mensaje de error usando substring .

Aquí hay una muestra con una cadena XML simplificada, pero creo que entiendes la 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

Resultado:

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