在微軟的sql server 論壇里面有一個很常見的問題就是,sql server 2005是否有與sum類似的集合函數,但是是用于字符串的集合的。例如,假設一個數據庫有如下的表和數據::
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/網站上找到。
新聞熱點
疑難解答