Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jaki jest najlepszy sposób określenia w SQL Server, czy dany ciąg jest prawidłowym kodem XML, czy nie?

Być może nie jest konieczne sprawdzanie poprawności XML. Możesz sprawdzić obecność odpowiedniego xml tag z charindex w instrukcji case i wyodrębnij komunikat o błędzie za pomocą substring .

Oto próbka z uproszczonym ciągiem XML, ale myślę, że masz pomysł.

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

Wynik:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zatwierdzić i wycofać transakcję na serwerze sql?

  2. T-SQL używający SUM do sumy bieżącej

  3. SQL w celu określenia minimalnej liczby kolejnych dni dostępu?

  4. Seminarium internetowe:Śledzenie postępu zapytań w SQL Server

  5. SQL - Łączenie tabel, w których jedna z kolumn jest listą