Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Trong SQL Server, cách tốt nhất để xác định xem một chuỗi đã cho có phải là XML hợp lệ hay không?

Có lẽ không cần thiết phải kiểm tra XML hợp lệ. Bạn có thể kiểm tra sự hiện diện của xml thích hợp thẻ với charindex trong một câu lệnh trường hợp và trích xuất thông báo lỗi bằng cách sử dụng substring .

Đây là một ví dụ với một chuỗi XML được đơn giản hóa nhưng tôi nghĩ rằng bạn hiểu rõ.

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

Kết quả:

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. Có cách nào để lặp qua biến bảng trong TSQL mà không sử dụng con trỏ không?

  2. Làm thế nào để triển khai huy hiệu?

  3. Làm thế nào để chuyển đổi một chuỗi sang Hex và ngược lại?

  4. Tại sao lại sử dụng mệnh đề INCLUDE khi tạo chỉ mục?

  5. SQL tham gia:Tương lai của tiêu chuẩn ANSI SQL (ở đâu so với tham gia)?