2012-03-28 92 views
1

我在表中包含XML文本的列,但它不是XML类型,其类型不应更改。T-SQL XML值/节点函数+ XML Cast

我写了下面的SQL查询从其

DECLARE @TempXML XML=(SELECT TOP 1 XMLColumn FROM TableOne) 

SELECT T.c.query('.').value('(/question/@id)[1]','BIGINT') AS [QuestionID] 
     ,T.c.query('.').value('(/question/@comment)[1]','NVARCHAR(100)') AS [Comment] 
     ,T.c.query('.').value('(/question/answer/@pos)[1]','TINYINT') AS [AnswerPosition] 
FROM @TempXML.nodes('/submission/question') T(c) 

的问题得到一些信息,我有网是我必须要创造一个对每行上面的查询将被执行的观点,但我无法连接查询和xml转换。

我已尝试创建CTE来执行转换,但在执行我的查询时遇到了一些难点 。

WITH CTEview(CurrentXML) AS 
(
    SELECT CAST(XMLColumn AS XML) AS [CurrentXML] 
    FROM TableOne 
) 
--My SQL goes here 
+0

哇,我已经做了这个改变,添加了使用Cross Apply的CTE中的XML列 – gotqn 2012-03-28 17:11:46

回答

1

对CTE的XML列使用“交叉应用”解决了这个问题。