我想在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