阅兵:Sql server 2005数据库列表合计

王朝mssql·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

在微软的SQL Server 论坛里面有一个很常见的问题就是,SQL Server 2005是否有与SUM类似的集合函数,但是是用于字符串的集合的。例如,假设一个数据库有如下的表和数据::

CREATE TABLE Strings

(

String VARCHAR(20)

)

INSERT Strings VALUES ('A')

INSERT Strings VALUES ('B')

INSERT Strings VALUES ('C')

有可能要在这个表上用到如下的集合,以便生成一个字符串的列表:

SELECT LISTAGG(String)

FROM Strings

输出:

'A, B, C'

虽然这个合计没有构建在SQL Server 2005的内部,新的系统仍然引入了一种可以轻松达到这个功能的方式。最常见的方式就是使用新的CLR用户自定义合计(UDA)。不幸的是,用户自定义合计有8000个字节的限制,这大大限制了它们在对大集合进行合计的应用。

另一种在SQL Server 2005中达到目标的方式就是新的FOR XML PATH函数的副产品。通过制定空的路径,就有可能产生一个类似字符串合计的函数来:

SELECT String + ', ' AS [text()]

FROM Strings

ORDER BY String

FOR XML PATH('')

有关这个技术的更多信息,可以在Aaron Bertrand 的ASP FAQ http://www.aspfaq.com/网站上找到。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航