sql >> Database >  >> RDS >> Sqlserver

Wat is in SQL Server de beste manier om te bepalen of een bepaalde tekenreeks een geldige XML is of niet?

Misschien is het niet nodig om te controleren op geldige XML. Je zou kunnen controleren op de aanwezigheid van de juiste xml tag met charindex in een case-statement en extraheer het foutbericht met behulp van substring .

Hier is een voorbeeld met een vereenvoudigde XML-string, maar ik denk dat je het idee begrijpt.

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

Resultaat:

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


  1. SQLSTATE [HY000] [2003] Kan geen verbinding maken met MySQL-server op '127.0.0.1' (61) fout Laravel 4.1

  2. Mysql-server ondersteunt geen 4-byte gecodeerde utf8-tekens

  3. Hoe mysqlnd voor php inschakelen?

  4. Hoe maak je een kolom uniek in SQL?