Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从TSQL视图(pivot?)中的数据行执行字符串连接_Sql_Sql Server 2005_Concatenation_Sql View - Fatal编程技术网

从TSQL视图(pivot?)中的数据行执行字符串连接

从TSQL视图(pivot?)中的数据行执行字符串连接,sql,sql-server-2005,concatenation,sql-view,Sql,Sql Server 2005,Concatenation,Sql View,我想在SQLServer中创建一个视图,该视图结合了多个数据库元数据 我想要的一段元数据位于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

我想在SQLServer中创建一个视图,该视图结合了多个数据库元数据

我想要的一段元数据位于
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!
如您所见,“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!

有什么建议或解决办法吗?速度在任何方面都不是关键,但简单性和低影响才是关键(我希望避免使用CLR函数之类的函数——理想情况下,整个过程都会包含在视图定义中)。我研究了一些基于XML的建议,但结果产生了充满XML转义字符串的文本。

有几种可能的解决方案。最简单的方法是使用CTE。这篇文章对这个主题进行了很好的讨论:

看看这里:

为什么不使用定义列,将数据存储为单个nvarchar(max)

而不是读取多个syscomments文本(nvarchar(4000))列,这些列分布在多行上,并且必须连接

SELECT object_id, definition FROM sys.sql_modules

只是一个想法。。。你说的很简单:-)

正如问题中提到的,我已经走了这条路。结果是文本中充满了XMl转义序列,从逻辑比较运算符到新行,无所不包。此乱码输出不适用于进一步的操作,如搜索。谢谢。这更有帮助。
SELECT object_id, definition FROM sys.sql_modules