2014-11-03 114 views
0

爲什麼這個查詢沒有執行?如何在不聲明XML的情況下執行子查詢?

SELECT [Value] = T.c.value('.','varchar(30)') FROM (SELECT '<s>'+ REPLACE ((select tag_id+',' from tbl_container_track for xml path('')),',','</s> <s>')+ '</s>').nodes('/s') T(c)

但是這一次是工作?

declare @X xml 
 
SELECT @X = (SELECT '<s>'+ REPLACE ((select tag_id+',' from tbl_container_track for xml path('')),',','</s> <s>')+ '</s>') 
 
SELECT [Value] = T.c.value('.','varchar(30)') FROM @X.nodes('/s') T(c)

有人能幫我沒有宣佈@X簡化?

回答

1

試試這個:強制轉換爲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) 
+0

錯誤顯示.... 沒有列名於「數據」第1欄指明。 – 2014-11-04 09:58:36

+0

施放操作後給列添加別名 – knkarthick24 2014-11-04 10:10:41

+0

謝謝!它的工作! – 2014-11-04 10:23:31