首页 > 数据库 > SQL Server > 正文

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

2024-08-31 00:49:28
字体:
来源:转载
供稿:网友

在微软的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/网站上找到。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表