用CLR整合為SQL 2005新增簡繁轉換功能

iSQlServer發表於2009-04-23
最近的一個專案中要用到把輸入到系統的內容都轉換成繁體儲存到另外一個欄位,系統是asp+sql2005,本來是想在asp中來實現這個功能,只是asp實現這個貌似有點困難,就想到了微軟的一個Microsoft Visual Studio International Pack v1.0,裡面就有中文書處理功能,還比較豐富,這裡只用簡繁轉換。Microsoft Visual Studio International Pack v1.0的下載地址:http://download.microsoft.com/download/5/7/3/57345088-ACF8-4E9B-A9A7-EBA35452DEF2/vsintlpack1.zip。解壓之後安裝CHTCHSConv.msi,安裝之後新建一個類庫類目,新增對Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool引用。引入Microsoft.SqlServer.Server;
Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;名稱空間。

 

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gtusing Microsoft.SqlServer.Server;
using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;

namespace IMELSChineseConverter
{
    
public class MelsChineseConverter
    {
        [SqlFunction(DataAccess 
= DataAccessKind.None)]
        
public static string Convert(string text, string Direction)
        {
            
string ctext = string.Empty;
            
if (Direction.ToLower() == "s2t")
            {
                ctext 
= ChineseConverter.Convert(text, ChineseConversionDirection.SimplifiedToTraditional);
            }
            
else if(Direction.ToLower() == "t2s")
            {
                ctext 
= ChineseConverter.Convert(text, ChineseConversionDirection.TraditionalToSimplified);
            }
            
return ctext;
        }
    }
}

 

 

這裡要把這個功能整合到SQL2005裡去,就要用到SQL2005的CLR整合。現在我們來啟用SQL2005的CLR整合:

 

開始--所有程式--Microsoft SQL Server 2005--配置工具--SQL Server 外圍應用配置器--功能的外圍應用配置器--CLR整合--啟用CLR整合。

 

之後我們給SQL2005新增這個程式集,假如我們要為DataBaseTest這個資料庫來增加此程式集,

在SQL裡執行如下語句

USE [DataBaseTest]

GO

 

 

ALTER DATABASE [DataBaseTest] SET TRUSTWORTHY ON
create assembly IMELSChineseConverter from 'D:\SqlCLR\IMELSChineseConverter.dll' WITH PERMISSION_SET = UNSAFE

 

然後我們再建立一個SQLFunction來應用這個程式

 

USE [DataBaseTest]
GO
CREATE FUNCTION [dbo].[MelsChineseConverter](@text [nvarchar](max), @Direction [nvarchar](20))
RETURNS [nvarchar](max) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [IMELSChineseConverter].[IMELSChineseConverter.MelsChineseConverter].[Convert]

 

現在我們就可以應用這個函式來進行簡繁轉換了

 

SELECT [dbo].[MelsChineseConverter]('中國','s2t')

 

結果:中國

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-591581/,如需轉載,請註明出處,否則將追究法律責任。

相關文章