Sql 如何在不声明XML的情况下执行子查询?

Sql 如何在不声明XML的情况下执行子查询?,sql,sql-server,Sql,Sql Server,为什么不执行此查询 选择[Value]=T.c.Value'.'、'varchar30'从SELECT+REPLACE SELECT tag_id+'、'FROM tbl_container_track for xml path'、'、'.+.nodes'/s'Tc尝试以下操作:转换为您错过的xml数据类型 SELECT [Value] = T.c.value('.', 'varchar(30)') FROM (SELECT Cast(( '<s>' + Replace ((S

为什么不执行此查询


选择[Value]=T.c.Value'.'、'varchar30'从SELECT+REPLACE SELECT tag_id+'、'FROM tbl_container_track for xml path'、'、'.+.nodes'/s'Tc尝试以下操作:转换为您错过的xml数据类型

SELECT [Value] = T.c.value('.', 'varchar(30)')
FROM   (SELECT Cast(( '<s>' + Replace ((SELECT tag_id+',' FROM tbl_container_track FOR xml path('')), ',', '</s> <s>')
                      + '</s>' ) AS XML)) AS Data
       CROSS APPLY Data.nodes('/s') T(c) 

在强制转换操作后为列指定别名,但执行所花的时间非常慢!!这种XML操作在SQLServer中不是一件很快的事情。使用类型化XML可能会有所帮助,但在优化性能时,请始终小心使用这样的XML。