SQL Server中的按位OR函数

时间:2014-03-18 09:10:54

标签: c# sql-server aggregate-functions sqlclr bitwise-or

我想创建一个自定义按位OR聚合函数。 我想像内置的聚合函数(MIN,MAX等)一样使用它。

SELECT dbo.bitwise_or(bit_string) FROM table

其中bit_string是nvarchar(3)

因此,例如,如果表格包含两行('100','001'),则上述查询应返回'101'

我想将此实现为具有以下聚合的CLR函数/程序集:

CREATE AGGREGATE dbo.bitwise_or (bit_string nvarchar(3))
RETURNS [nvarchar(3)]
EXTERNAL NAME [Aggregate].[bitwise_or]

有人可以给我一个c#代码的快速入门吗?

我已按照这篇文章来实现amedian聚合函数:http://www.sqlservercentral.com/articles/SQL+CLR/3208/ 但是有很多代码(不确定在我的情况下真正需要什么)

1 个答案:

答案 0 :(得分:0)

此链接几乎解释了所有内容:http://msdn.microsoft.com/en-us/library/91e6taax(v=vs.90).aspx

  1. 在VS中创建SQL Server项目
  2. 添加项目
  3. 选择汇总
  4. 为其输入名称
  5. 编写代码:
  6. 使用System; 使用System.Data.SqlTypes; 使用Microsoft.SqlServer.Server;

    [Serializable]
    [SqlUserDefinedAggregate(Format.Native)]
    public struct Bitwise_or
    {
      //Implement the function below
    
      // Initialize any reource here, called once
      public void Init()
      {
      }
    
      // Decides what action to take for each row value
      public void Accumulate()
      {
      }    
    
      // Used by SQL Server when large amount of data is processed
      public void Merge()
      {
      }    
    
      // Free up resources
      public void Terminate()
      {
      }    
    }
    
    1. 构建
    2. 部署您的项目,它将在SQL Server中可用。