CLR函数实现字符串排序七步通

开发 后端
文章主要介绍CLR函数实现字符串排序的七个步骤,本文有详细的代码和图片讲解,希望看完可以给大家带来帮助,总结一下经验。

下面我们来给大家编写一个简短的CLR函数,来实现SQL Server 2005的功能。接下来让我们来看看CLR函数具体是如何实现这一功能的,希望可以给大家带来帮助。

步骤1:启用CLR集成

首先需要在SQL Server外围应用配置器中进行设置,确保SQL Server已经启用了CLR。如图1所示:

SQL Server 2005外围应用配置器

选择“功能的外围应用配置器”,显示如图2所示界面:

功能的外围应用配置器

确保“启用CLR集成”这一项打勾,然后点“确定”按钮。

步骤2:编写CLR代码

首先,我们需要做的是编写CLR代码。采用VB.NET或者C#来写都可以,在这个例子中我们将使用VB.NET 。

下面的范例代码中,创建了一个名为CLRFunctions的类,该类中包含了一个名为SortString的函数。SortString函数对输入的一个字符串变量进行排序,并返回一个排序后的字符串。

第一步:使用内置的VB函数,把 “,”作为分隔符分割输入的字符串,得到一个字符串数组;

第二步:采用Array.Sort,对数组中的数据进行排序列。这一部如果采用T-SQL来写的话,更为简单。

将代码保存到SQLServerCLRSortString.vb文件中。

  1. Public Class CLRFunctions   
  2. Public Shared Function SortString(ByVal Name As String) As String  
  3. Dim i As Integer  
  4. Dim returnValue As String  
  5. Dim stringArray() As String  
  6. ' 分割字符串,得到数组  
  7. stringArray = Split(Name, ",")  
  8. ' 对数组进行排序  
  9. Array.Sort(stringArray)  
  10. '初始化返回值字符串  
  11. returnValue = "" 
  12. For i = LBound(stringArray) To UBound(stringArray)  
  13. returnValuereturnValue = returnValue & stringArray(i) & ","  
  14. Next i  
  15. Return returnValue  
  16. End Function  
  17. End Class 

步骤3:编译CLR代码

为了使用此代码,需要先对代码进行编译。在命令行状态下,可以使用vbc.exe应用程序来编译代码。具体命令如下所示:

  1. C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\vbc /target:library C:\SQLServerCLRSortString.vb 

 vbc.exe应用程序,在.NET 2.0框架目录中可以找到,不同的服务器或桌面因安装路径不同可能会有差异。编译成功后,将得到C:\SQLServerCLRSortString.dll这个DLL文件。把DLL拷贝到我们的SQL Server机器上

步骤4:在SQL Server中注册DLL

代码编译通过后,您需要与SQL Server中注册DLL。要实现到这一目的,可以在要使用该函数的数据库中能运行这些命令。注册的目的,就是将外部创建的DLL与SQL Server内部对象进行绑定,这样外部DLL中的函数就可以和SQL Server中的正常函数一样进行调用了。

在下面的函数中,我们可以看到引用CLRFunctions.CLRFunctions.SortString由三个部分组成:

  1. *CLRFunctions – 装配引用     
  2. *CLRFunctions – VB.net 代码中所引用的类名    
  3. *SortString – VB.net代码中所引用的函数    
  4. CREATE ASSEMBLY CLRFunctions FROM 'C:\SQLServerCLRSortString.dll'    
  5. GO    
  6. CREATE FUNCTION dbo.SortString    
  7. (    
  8. @name AS NVARCHAR(255)    
  9. )    
  10. RETURNS NVARCHAR(255)    
  11. AS EXTERNAL NAME CLRFunctions.CLRFunctions.SortString    
  12. GO   

步骤5:创建测试用的数据表和数据

可以创建一个示例表和一些测试数据,来检验一下,具体代码如下所示:

  1. CREATE TABLE testSort (data VARCHAR(255))   
  2. GO  
  3. INSERT INTO testSort VALUES('apple,pear,orange,banana,grape,kiwi')  
  4. INSERT INTO testSort VALUES('pineapple,grape,banana,apple')  
  5. INSERT INTO testSort VALUES('apricot,pear,strawberry,banana')  
  6. INSERT INTO testSort VALUES('cherry,watermelon,orange,melon,grape')  

 步骤6:测试

如果要测试CLR函数,在步骤4执行后示例表和数据创建完之后,可以运行下面的SELECT语句,分别列出排序前和排序后的数据,两者便于对比。

  1. SELECT data, dbo.sortString(data) as sorted FROM testSort 

步骤7:删除CLR函数

如果希望彻底删除CLR函数,您需要将之前创建的VB文件以及编译过程中产生的DLL都删除。

运行下面的T-SQL代码可以删除之前创建的对象。

  1. DROP FUNCTION dbo.SortString   
  2. GO  
  3. DROP ASSEMBLY CLRFunctions  
  4. GO  
  5. DROP TABLE testSort  
  6. GO 
快试试吧,很简单的!

【编辑推荐】

  1. .NET CLR性能评测
  2. 分析CLR Via的方法参数相关
  3. 浅析C# CLR的语言特性
  4. 解析C# CLR的15个细节
  5. 浅析CLR Via C#构造函数
责任编辑:田树 来源: 博客
相关推荐

2009-11-06 13:59:09

WCF Service

2010-08-10 13:15:36

Flex配置

2009-10-20 09:42:16

VB.NET编程

2019-03-10 20:37:14

Python编程语言

2010-05-28 18:30:26

SVN1.4.5Ser

2010-05-28 10:10:49

2023-04-28 14:38:47

2010-07-02 15:48:48

BlackBerry开

2009-11-06 14:33:27

WCF代理节点

2017-04-21 14:21:53

深度学习神经网络

2009-07-30 18:08:14

IT与业务融合

2010-06-28 15:18:51

SQL Server

2011-07-18 16:11:32

域控制器

2011-09-05 17:36:24

2019-05-10 08:27:12

MySQL数据库字符集

2017-03-03 10:09:30

2018-02-24 18:12:30

2013-10-29 14:57:17

AngularJS项目

2013-11-06 13:55:27

AngularJS服务

2009-11-03 10:09:33

Oracle表空间
点赞
收藏

51CTO技术栈公众号