1 Star 0 Fork 0

terranhero/SQL SERVER 数据库自定义聚合函数

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
StringJoin.cs 1.20 KB
一键复制 编辑 原始数据 按行查看 历史
terranhero 提交于 2024-03-06 09:25 . 提交代码
using System;
using System.Collections.Generic;
using System.Data.SqlTypes;
using System.Text;
using Microsoft.SqlServer.Server;
/// <summary>创建聚合函数,允许串联字符串</summary>
[Serializable, SqlUserDefinedAggregate(Format.UserDefined, IsInvariantToDuplicates = false, IsInvariantToNulls = true,
IsInvariantToOrder = false, IsNullIfEmpty = true, MaxByteSize = 8000, Name = "SYSF_STRINGJOIN")]
public struct StringJoin : IBinarySerialize
{
private StringBuilder _result;
public void Init() { _result = new StringBuilder();}
public void Accumulate(SqlString Value)
{
if (Value.IsNull)
{
return;
}
else
{
if (_result.Length > 0)
_result.AppendFormat(",{0}", Value.Value);
else
_result.Append(Value.Value);
}
}
public void Merge(StringJoin Group)
{
_result.Append(Group._result.ToString());
}
public SqlString Terminate()
{
if (_result.Length > 0)
{
return new SqlString(_result.ToString());
}
return new SqlString("");
}
#region IBinarySerialize 成员
public void Read(System.IO.BinaryReader r)
{
_result = new StringBuilder(r.ReadString());
}
public void Write(System.IO.BinaryWriter w)
{
w.Write(_result.ToString());
}
#endregion
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C#
1
https://gitee.com/terran-hero/aggregates.git
git@gitee.com:terran-hero/aggregates.git
terran-hero
aggregates
SQL SERVER 数据库自定义聚合函数
master

搜索帮助