回答

收藏

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

技术问答 技术问答 231 人阅读 | 0 人回复 | 2023-09-14

我想在SQL Server将数据库元数据结合在一起,创建了一个视图。& y" e0 X' W* X  w0 x7 H
我想要的一个元数据保存在sys.syscomments表中-relevent列如下:
) _' P. ~9 O" g, R8 c" \4 F) N" r- eid   colid  text---- ------ -------------10011 1                                                                                                                                                                                                                                                                                                                                                             A comment.1002 1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    This is a lo1002 2        ng comment.1003 1                                                                                                                                                                                                                                                 This is an e1003 2         ven longer c1003 3                                                                                                                                                                                                                                                                                                                                                          omment!如你所见,如果文本列中的数据超过最大长度(SQL Server中为8000字节/6 D; @) v# @! U6 E5 b) Z3 i' S
在我的例子中,4000个字符是12个字符),数据将分为多行。colid标识将文本重新组合在一起的顺序。. S9 E7 H- ]- r2 [
我想重新组合我的视图中的查询/子查询sys.syscomments表中
1 H8 J8 X  c+ @' x3 Y5 @, vid   comment (nvarchar(max))---- ----------------------------------1001 A comment.1002 This is a long comment.1003 This is an even longer comment!有什么建议或解决方案吗?速度不是至关重要的,但简单性和低影响是至关重要的(我想避免CLR函数等等-" X0 C- G* s' I
理想情况下,整个过程应该包装在视图定义中)。我研究了一些基于它的东西XML但结果产生了填充物XML转换字符串的文本。6 T2 Y+ l0 U3 \2 }( b( c
                                                               
% s1 T* P* c8 X" c& {3 O    解决方案:                                                                4 T9 P- [8 y! |- a/ J, X' C
                                                                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
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则