SQL SERVER 2005允許自定義聚合函式

2022-04-05 09:34:08 字數 1844 閱讀 8336

不多說了,說明後面是完整的**,用來將字串型的字段的各行的值拼成乙個大字串,也就是通常所說的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...