[转载]2005数据库列表合计
<p>信息来源: CCIDNET</p><p style="TEXT-INDENT: 2em">在微软的SQL Server 论坛里面有一个很常见的问题就是,SQL Server 2005是否有与SUM类似的集合函数,但是是用于字符串的集合的。例如,假设一个数据库有如下的表和数据:: </p><p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr><td style="WORD-WRAP: break-word" bgcolor="#f3f3f3">CREATE TABLE Strings<br />(<br /> String VARCHAR(20) <br />) <p><font face="Verdana">INSERT Strings VALUES ('A')<br />INSERT Strings VALUES ('B')<br />INSERT Strings VALUES ('C')</font></p><p><font face="Verdana">有可能要在这个表上用到如下的集合,以便生成一个字符串的列表:<br />SELECT LISTAGG(String)<br />FROM Strings</font></p></td></tr></tbody></table></p><p> 输出:</p><p> 'A, B, C'</p><p> 虽然这个合计没有构建在SQL Server 2005的内部,新的系统仍然引入了一种可以轻松达到这个功能的方式。最常见的方式就是使用新的CLR用户自定义合计(UDA)。不幸的是,用户自定义合计有8000个字节的限制,这大大限制了它们在对大集合进行合计的应用。</p><p> 另一种在SQL Server 2005中达到目标的方式就是新的FOR XML PATH函数的副产品。通过制定空的路径,就有可能产生一个类似字符串合计的函数来:</p><p> SELECT String + ', ' AS [text()]</p><p> FROM Strings</p><p> ORDER BY String</p><p> FOR XML PATH('')</p><p> 有关这个技术的更多信息,可以在Aaron Bertrand 的ASP FAQ<font face="Verdana">[url]http://www.aspfaq.com/[/url]</font>网站上找到。<br /></p>页:
[1]
