zoukankan      html  css  js  c++  java
  • SQL Server 2008 通过C# CLR 使用正则表达式

    参考文章

    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程序基础与编程结构
    英特尔图形处理器第8代架构
    用servlet打内容到网页上
    servlet获取多个同名参数
    JAVA之复制数组
    用JAVA写一个简单的英文加密器
    Tomcat使用
    JAVA,字符串替换
    使用自己的域名解析博客园地址(CSDN也可以)
    错误笔记20181124
  • 原文地址:https://www.cnblogs.com/lazyneal/p/7120098.html
Copyright © 2011-2022 走看看