Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

В SQL Server, какъв е най-добрият начин да се определи дали даден низ е валиден XML или не?

Може би не е необходимо да проверявате за валиден XML. Можете да проверите за наличието на подходящия xml етикет с charindex в оператор case и извлечете съобщението за грешка с помощта на substring .

Ето пример с опростен XML низ, но мисля, че схващате идеята.

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

Резултат:

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. Как да получите резултат с плаваща стойност, като разделите две цели числа с помощта на T-SQL?

  2. Защо не мога да използвам псевдоним за агрегат в клауза за наличие?

  3. Как да намерите общото използване на табличното пространство в SQL Server 2008?

  4. Могат ли заявки, които четат променливи на таблица, да генерират паралелни планове за изпълнение в SQL Server 2008?

  5. Как да изтрия всички дублиращи се записи от SQL таблица?