自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

CLR函數(shù)實(shí)現(xiàn)字符串排序七步通

開(kāi)發(fā) 后端
文章主要介紹CLR函數(shù)實(shí)現(xiàn)字符串排序的七個(gè)步驟,本文有詳細(xì)的代碼和圖片講解,希望看完可以給大家?guī)?lái)幫助,總結(jié)一下經(jīng)驗(yàn)。

下面我們來(lái)給大家編寫(xiě)一個(gè)簡(jiǎn)短的CLR函數(shù),來(lái)實(shí)現(xiàn)SQL Server 2005的功能。接下來(lái)讓我們來(lái)看看CLR函數(shù)具體是如何實(shí)現(xiàn)這一功能的,希望可以給大家?guī)?lái)幫助。

步驟1:?jiǎn)⒂肅LR集成

首先需要在SQL Server外圍應(yīng)用配置器中進(jìn)行設(shè)置,確保SQL Server已經(jīng)啟用了CLR。如圖1所示:

SQL Server 2005外圍應(yīng)用配置器

選擇“功能的外圍應(yīng)用配置器”,顯示如圖2所示界面:

功能的外圍應(yīng)用配置器

確保“啟用CLR集成”這一項(xiàng)打勾,然后點(diǎn)“確定”按鈕。

步驟2:編寫(xiě)CLR代碼

首先,我們需要做的是編寫(xiě)CLR代碼。采用VB.NET或者C#來(lái)寫(xiě)都可以,在這個(gè)例子中我們將使用VB.NET 。

下面的范例代碼中,創(chuàng)建了一個(gè)名為CLRFunctions的類,該類中包含了一個(gè)名為SortString的函數(shù)。SortString函數(shù)對(duì)輸入的一個(gè)字符串變量進(jìn)行排序,并返回一個(gè)排序后的字符串。

第一步:使用內(nèi)置的VB函數(shù),把 “,”作為分隔符分割輸入的字符串,得到一個(gè)字符串?dāng)?shù)組;

第二步:采用Array.Sort,對(duì)數(shù)組中的數(shù)據(jù)進(jìn)行排序列。這一部如果采用T-SQL來(lái)寫(xiě)的話,更為簡(jiǎn)單。

將代碼保存到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. ' 分割字符串,得到數(shù)組  
  7. stringArray = Split(Name, ",")  
  8. ' 對(duì)數(shù)組進(jìn)行排序  
  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代碼

為了使用此代碼,需要先對(duì)代碼進(jìn)行編譯。在命令行狀態(tài)下,可以使用vbc.exe應(yīng)用程序來(lái)編譯代碼。具體命令如下所示:

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

 vbc.exe應(yīng)用程序,在.NET 2.0框架目錄中可以找到,不同的服務(wù)器或桌面因安裝路徑不同可能會(huì)有差異。編譯成功后,將得到C:\SQLServerCLRSortString.dll這個(gè)DLL文件。把DLL拷貝到我們的SQL Server機(jī)器上

步驟4:在SQL Server中注冊(cè)DLL

代碼編譯通過(guò)后,您需要與SQL Server中注冊(cè)DLL。要實(shí)現(xiàn)到這一目的,可以在要使用該函數(shù)的數(shù)據(jù)庫(kù)中能運(yùn)行這些命令。注冊(cè)的目的,就是將外部創(chuàng)建的DLL與SQL Server內(nèi)部對(duì)象進(jìn)行綁定,這樣外部DLL中的函數(shù)就可以和SQL Server中的正常函數(shù)一樣進(jìn)行調(diào)用了。

在下面的函數(shù)中,我們可以看到引用CLRFunctions.CLRFunctions.SortString由三個(gè)部分組成:

  1. *CLRFunctions – 裝配引用     
  2. *CLRFunctions – VB.net 代碼中所引用的類名    
  3. *SortString – VB.net代碼中所引用的函數(shù)    
  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:創(chuàng)建測(cè)試用的數(shù)據(jù)表和數(shù)據(jù)

可以創(chuàng)建一個(gè)示例表和一些測(cè)試數(shù)據(jù),來(lái)檢驗(yàn)一下,具體代碼如下所示:

  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:測(cè)試

如果要測(cè)試CLR函數(shù),在步驟4執(zhí)行后示例表和數(shù)據(jù)創(chuàng)建完之后,可以運(yùn)行下面的SELECT語(yǔ)句,分別列出排序前和排序后的數(shù)據(jù),兩者便于對(duì)比。

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

步驟7:刪除CLR函數(shù)

如果希望徹底刪除CLR函數(shù),您需要將之前創(chuàng)建的VB文件以及編譯過(guò)程中產(chǎn)生的DLL都刪除。

運(yùn)行下面的T-SQL代碼可以刪除之前創(chuàng)建的對(duì)象。

  1. DROP FUNCTION dbo.SortString   
  2. GO  
  3. DROP ASSEMBLY CLRFunctions  
  4. GO  
  5. DROP TABLE testSort  
  6. GO 
快試試吧,很簡(jiǎn)單的!

【編輯推薦】

  1. .NET CLR性能評(píng)測(cè)
  2. 分析CLR Via的方法參數(shù)相關(guān)
  3. 淺析C# CLR的語(yǔ)言特性
  4. 解析C# CLR的15個(gè)細(xì)節(jié)
  5. 淺析CLR Via C#構(gòu)造函數(shù)
責(zé)任編輯:田樹(shù) 來(lái)源: 博客
相關(guān)推薦

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編程語(yǔ)言

2010-05-28 10:10:49

2010-05-28 18:30:26

SVN1.4.5Ser

2023-04-28 14:38:47

2010-06-28 15:18:51

SQL Server

2009-11-06 14:33:27

WCF代理節(jié)點(diǎn)

2010-07-02 15:48:48

BlackBerry開(kāi)

2017-04-21 14:21:53

深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

2009-07-30 18:08:14

IT與業(yè)務(wù)融合

2011-07-18 16:11:32

域控制器

2011-09-05 17:36:24

2019-05-10 08:27:12

MySQL數(shù)據(jù)庫(kù)字符集

2014-01-02 16:14:10

PostgreSQL字符串

2017-03-03 10:09:30

2013-10-29 14:57:17

AngularJS項(xiàng)目

2018-02-24 18:12:30

2013-11-06 13:55:27

AngularJS服務(wù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)