Sql server 在T-SQL中查询之前将字符串转换为XML数据类型

Sql server 在T-SQL中查询之前将字符串转换为XML数据类型,sql-server,xml,tsql,Sql Server,Xml,Tsql,如何将字符串转换为XML数据类型,以便以XML形式查询数据: 例如(感谢“mellamokb the Wise”,他为此提供了原始SQL) 如果xmlstring是XML类型,下面的代码可以正常工作(请参阅) 但是,如果xmlString的类型为varchar,即使我正在将该字符串转换为XML(),我也会收到一个错误: 你可以在一个额外的十字架上施法 select id, T.N.value('@Name', 'varchar(50)') as name from Data cro

如何将字符串转换为XML数据类型,以便以XML形式查询数据:

例如(感谢“mellamokb the Wise”,他为此提供了原始SQL)

如果xmlstring是XML类型,下面的代码可以正常工作(请参阅)

但是,如果xmlString的类型为varchar,即使我正在将该字符串转换为XML(),我也会收到一个错误:


你可以在一个额外的十字架上施法

select id,
       T.N.value('@Name', 'varchar(50)') as name
from Data
cross apply (select cast(xmlstring as xml)) as X(X)
cross apply X.X.nodes('/Holidays/Summer/Regions/Destinations/Destination') T(N)

转换为XML可能存在性能问题。看一看

select id, name
from Data
  cross apply (
  select Destination.value('data(@Name)', 'varchar(50)') as name
  from CONVERT(xml,[xmlstring]).nodes('/Holidays/Summer/Regions/Destinations/Destination') D(Destination)
) Destinations(Name)
select id,
       T.N.value('@Name', 'varchar(50)') as name
from Data
cross apply (select cast(xmlstring as xml)) as X(X)
cross apply X.X.nodes('/Holidays/Summer/Regions/Destinations/Destination') T(N)