在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
参考文章 MSSQLSERVER接入c#clr程序集,使c#函数变sql函数 SQL中采用Newtonsoft.Json处理json字符串 操作步骤 1.新建项目->已安装->模版->其它语言->SQL Server 2.项目右键->添加->新建项->SQL CLR C#->SQL CLR C# 用户定义的函数 3.C# 的函数方法 using System; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; using System.Text.RegularExpressions; public partial class UserDefinedFunctions { [Microsoft.SqlServer.Server.SqlFunction] public static SqlBoolean IsMatch(string Input, string Pattern) { return new SqlBoolean(Regex.IsMatch(Input, Pattern)); } [Microsoft.SqlServer.Server.SqlFunction] public static SqlString RegexReplace(string Input, string Pattern, string Replacement) { return new SqlString(Regex.Replace(Input, Pattern, Replacement)); } } 4.程序发布(方法一): a.程序发布前调整一下项目属性中目标平台和目标框架,我这里用的是SQL Server 2008 框架为.Net 3.5
b.开启数据库服务器配置选项clr enabled ---开启所有服务器配置选项 EXEC sp_configure N'show advanced options', N'1' RECONFIGURE WITH OVERRIDE --开启clr enabled 选项 EXEC sp_configure N'clr enabled', N'1' RECONFIGURE WITH OVERRIDE --关闭所有服务器配置选项 EXEC sp_configure N'show advanced options', N'0' RECONFIGURE WITH OVERRIDE --如果存在权限问题,执行下面一段脚本 alter database [master] set TRUSTWORTHY on EXEC sp_changedbowner 'sa'
c.项目->右键->发布->编辑->选择发布数据库
d.点击发布
4.程序发布(方法二): 前两步骤与方法一相同 a.选中数据库->可编程性->程序集->新建程序集
b.执行注册函数的脚本(在发布时选择生成脚本) GO CREATE FUNCTION [dbo].[IsMatch] (@Input NVARCHAR (4000), @Pattern NVARCHAR (4000)) RETURNS BIT AS EXTERNAL NAME [Regex].[UserDefinedFunctions].[IsMatch] GO CREATE FUNCTION [dbo].[RegexReplace] (@Input NVARCHAR (4000), @Pattern NVARCHAR (4000), @Replacement NVARCHAR (4000)) RETURNS NVARCHAR (4000) AS EXTERNAL NAME [Regex].[UserDefinedFunctions].[RegexReplace]
5.测试使用 select dbo.IsMatch('123abc','\d{2}') --查找连续2位数字 select dbo.IsMatch('123abc','\d{4}') --查找连续4位数字 select dbo.RegexReplace('123abc','\d{3}','ABC') --替换连续3位数字为ABC 结果:
|
请发表评论