sql >> Databasteknik >  >> RDS >> Sqlserver

I SQL Server, vad är det bästa sättet att avgöra om en given sträng är en giltig XML eller inte?

Kanske är det inte nödvändigt att söka efter giltig XML. Du kan kontrollera förekomsten av lämplig xml tagga med charindex i en case-sats och extrahera felmeddelandet med substring .

Här är ett exempel med en förenklad XML-sträng men jag tror att du förstår idén.

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

Resultat:

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


  1. Oracle får främmande nycklar

  2. Hur man lägger till '$' efter '-' i SQL Query när du formaterar för valuta

  3. Realtidsmigrering av data från MySQL till elasticsearch?

  4. Komplex sorts fältsträng - nummer - sträng