如何在不声明XML的情况下执行子查询?
问题描述:
为什么这个查询没有执行?如何在不声明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简化?
答
试试这个:强制转换为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)
错误显示.... 没有列名于“数据”第1栏指明。 – 2014-11-04 09:58:36
施放操作后给列添加别名 – knkarthick24 2014-11-04 10:10:41
谢谢!它的工作! – 2014-11-04 10:23:31