不多說了,說明後面是完整的**,用來將字串型的字段的各行的值拼成乙個大字串,也就是通常所說的concat
例如有如下表dict
idname
category
1red
color
2blue
color
3fruit
4orange
fruit
執行sql語句:select category,dbo.concatenate(name) as names from dict group by category.
得到結果表如下
category
names
color
redblue
fruit
如果覺得需要用逗號或分號或其他任何你想要的分隔符分開,可以修改下面的**來實現。
在vs2005中,建立乙個連線到目標庫的sql server project,然後填加乙個「聚合」,將下面的**複製進去,編譯後,部署即可,然後在sql server中的「可程式設計性」「函式」「聚合函式」中就可以看到該函式了。
using system;
using system.data;
using microsoft.sqlserver.server;
using system.data.sqltypes;
using system.io;
using system.text;
[serializable]
[sqluserdefinedaggregate(
format.userdefined, //use clr serialization to serialize the intermediate result
isinvarianttonulls = true, //optimizer property
isinvarianttoduplicates = false, //optimizer property
isinvarianttoorder = false, //optimizer property
maxbytesize = 8000) //maximum size in bytes of persisted value
]public class concatenate : ibinaryserialize
///
/// accumulate the next value, not if the value is null
///
///
public void accumulate(sqlstring value)
///
/// merge the partially computed aggregate with this aggregate.
///
///
///
/// called at the end of aggregation, to return the results of the aggregation.
///
///
public sqlstring terminate()
return new sqlstring(output);
}public void read(binaryreader r)
public void write(binarywriter w)
}這裡有幾個比較重要的方法:terminate,這個方法是聚合最後呼叫的方法,它返回最後的值。可以是sql server的任何標量;accumulate,聚合每處理一行資料的時候都會呼叫一次,並將要處理的資料傳給方法。可以在函式內部進行比如比較,合併之類的處理。
設定SQL Server 2005允許SQL登陸
該操作主要分兩部分,設定伺服器允許sql登入 和 給使用者開啟登入許可權 具體步驟如下 1 啟動microsoft sql server managerment studio express,使用windows方式登入。2 在 物件資源管理器 視窗中的根節點 資料庫例項 上單擊右鍵,選擇 屬性 命令...
配置SQL Server 2005 以允許遠端連線
it168 技術文件 預設情況下,sqlserverexpressedition 2005和sql server 2005開發版不允許遠端連線。要允許遠端連線sql server 2005 需要完成以下步驟 在sqlserver 例項上啟用遠端連線。開啟伺服器 sqlbrowser 服務。配置防火牆...
配置SQL Server 2005 以允許遠端連線
預設情況下,sqlserverexpressedition 2005 和 sql server 2005 開發版不允許遠端連線。要允許遠端連線sql server 2005 需要完成以下步驟 在sqlserver 例項上啟用遠端連線。開啟伺服器sqlbrowser 服務。配置防火牆以允許sqlbro...