Dav*_*vid 6 sql sql-server-2005 concatenation sql-view
我想在SQL Server中创建一个结合了几个数据库元数据的视图.
我想要的一个元数据存在于sys.syscomments
表中 - 相关列如下:
id colid text
---- ------ -------------
1001 1 A comment.
1002 1 This is a lo
1002 2 ng comment.
1003 1 This is an e
1003 2 ven longer c
1003 3 omment!
Run Code Online (Sandbox Code Playgroud)
如您所见,"text"列中的数据如果超过最大长度(SQL Server中为8000字节/ 4000个字符,我的示例中为12个字符),则会分成多行.colid
标识将文本重新组合在一起的顺序.
我想在我的视图中创建查询/子查询来重新组装sys.syscomments表中的注释,以便我有:
id comment (nvarchar(max))
---- ----------------------------------
1001 A comment.
1002 This is a long comment.
1003 This is an even longer comment!
Run Code Online (Sandbox Code Playgroud)
任何建议或解决方案?速度在任何方面都不重要,但简单性和低影响力(我想避免CLR函数等 - 理想情况下整个事情将被包含在视图定义中).我已经研究了一些基于XML的建议,但结果产生了填充XML转义字符串的文本.
Qua*_*noi 13
SELECT id,
(
SELECT text AS [text()]
FROM mytable mi
WHERE mi.id = md.id
ORDER BY
mi.col
FOR XML PATH(''), TYPE
).value('/', 'NVARCHAR(MAX)')
FROM (
SELECT DISTINCT id
FROM mytable
) md
Run Code Online (Sandbox Code Playgroud)