【发布时间】:2015-01-21 20:41:34
【问题描述】:
有人能解释一下 SQL Server 中如何使用 FOR XML 吗?这是在不使用用户定义函数的情况下按行连接字符串的唯一方法吗?我从这个post 得到它,做了我需要做的事情,但我不明白。
发布此消息的人没有解释任何事情。经过一个详尽的 搜索我找不到任何可以理解的东西。不,鉴于我有限的 SQL 技能,MSDN 没有帮助。
这是我的 SQL,只是名称与该帖子中的名称不同。
SELECT
ID,
STUFF((
SELECT ' -' + Code
FROM #Z
WHERE (ID = Results.ID)
FOR XML PATH(''),TYPE).value('(./text())[1]','NVARCHAR(MAX)'),1,2,''
) AS ConcatCode
FROM #Z Results
GROUP BY ID
【问题讨论】:
-
MSDN 的documentation 似乎很清楚。使用
PATH模式here更加清晰。 -
FOR XML XPATH的特殊用法是 hacks 在 Sql Server 中执行 GROUP_CONCAT 或 ListAgg 的一种。 -
好吧,我不了解属性、元素或 XPath 表达式。这听起来更像是 HTML 术语。
-
XML与HTML非常相似;它们都使用属性、元素,并且可以针对它们运行 XPath 查询。您希望我们在这里为您解答什么具体问题?我们不做教程。 -
可能是TYPE directive 让您感到困惑。基本上,它指定应返回 xml 数据类型。然后.Value 是作用于该数据类型的方法
标签: sql sql-server tsql xpath sqlxml