平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“SQL2005CLR函数扩展-繁简转换的实现方法代码”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
理解这一步时,这个方法比较轻松,用Microsoft.VisualBasic命名空间下强大的字符串处理函数就能够了
c#代码如下所示,编译为BigConvertor.dll
--------------------------------------------------------------------------------
using System;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction ]
public static SqlString BigToGB(SqlString inString)
{
if (inString.IsNull) return SqlString .Null;
return (Microsoft.VisualBasic.Strings .StrConv(inString.Value, Microsoft.VisualBasic.VbStrConv .SimplifiedChinese, 0));
}
[Microsoft.SqlServer.Server.SqlFunction ]
public static SqlString GBToBig(SqlString inString)
{
if (inString.IsNull) return SqlString .Null;
return (Microsoft.VisualBasic.Strings .StrConv(inString.Value, Microsoft.VisualBasic.VbStrConv .TraditionalChinese, 0));
}
};
--------------------------------------------------------------------------------
部署代码如下所示
--------------------------------------------------------------------------------
CREATE ASSEMBLY BigConvertor FROM 'E:/sqlclrdata/BigConvertor.dll' WITH PERMISSION_SET = UnSAFE;
--
go
CREATE FUNCTION dbo. xfn_BigToGB
(
@value nvarchar ( max )
)
RETURNS nvarchar ( max )
AS EXTERNAL NAME BigConvertor. UserDefinedFunctions. BigToGB
go
CREATE FUNCTION dbo. xfn_GBToBig
(
@value nvarchar ( max )
)
RETURNS nvarchar ( max )
AS EXTERNAL NAME BigConvertor. UserDefinedFunctions. GBToBig
go
--------------------------------------------------------------------------------
测试代码如下所示
--------------------------------------------------------------------------------
/* 测试 */
select dbo. xfn_GBToBig( ' 简体与繁体文的转换 ' )
-- 簡體與繁體文的轉換
select dbo. xfn_BigToGB( ' 簡體與繁體文的轉換 ' )
-- 简体与繁体文的转换