ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

SQL Server 2008 通过C# CLR 使用正则表达式

2019-05-19 18:53:31  阅读:346  来源: 互联网

标签:C# Pattern Server IsMatch SQL using Input NVARCHAR


 

参考文章

MSSQLSERVER接入c#clr程序集,使c#函数变sql函数

正则表达式30分钟入门教程

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

 

 结果:

标签:C#,Pattern,Server,IsMatch,SQL,using,Input,NVARCHAR
来源: https://blog.csdn.net/az44yao/article/details/90345685

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有