sql >> Databáze >  >> RDS >> Sqlserver

Jaký je v SQL Server nejlepší způsob, jak určit, zda je daný řetězec platným XML nebo ne?

Snad není nutné kontrolovat platné XML. Můžete zkontrolovat přítomnost příslušného xml tag s charindex v příkazu case a extrahujte chybovou zprávu pomocí substring .

Zde je ukázka se zjednodušeným řetězcem XML, ale myslím, že tomu rozumíte.

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

Výsledek:

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


  1. Jak získat celkově nejoblíbenější značky z normalizovaných tabulek?

  2. Co je skalární UDF na serveru SQL?

  3. MariaDB ROUND() vs. TRUNCATE()

  4. seskupení na změnu stavu