在以前的帖子about generic creation of pivot table中,我找到了一个有效的例子。我只是无法完全理解XML最终成为varchar列的部分。
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(product)
from product
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
我试图在STUFF语句和FOR XML的描述中查找它,但无法找到所用代码[.value('.', 'NVARCHAR(MAX)')]
的解释。它转换XML to VARCHAR
,但在哪种情况下?
同样在this post中有一个部分参考:
.value('。','varchar(max)')只是从生成的XML片段中检索值,而不对任何“特殊”字符进行XML编码。
我不清楚附加.value来自哪个上下文。它是SELECT或XML或STUFF的一部分吗? 有人可以解释它的背景吗?或者指出正确的文档?