程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 用CLR集成為SQL 2005添加簡繁轉換功能

用CLR集成為SQL 2005添加簡繁轉換功能

編輯:關於SqlServer

最近的一個項目中要用到把輸入到系統的內容都轉換成繁體存儲到另外一個字段,系統是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;
命名空間。

下面是代碼:

vIEw plaincopy to clipboardprint?
using 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;  
        }  
    }  

using 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:SqlCLRIMELSChineseConverter.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')

結果:中國

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved