SQL Server 2005 中使用正则表达式匹配

CLR 用户定义函数只是在 .NET 程序集中定义的静态方法。CREATE FUNCTION 语句已扩展为支持创建 CLR 用户定义函数。

1、创建数据库项目

2009032123442226.jpg

3、将自定义函数部署到数据库 

2009032123480551.jpg

以下是演示代码:

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
{
    
public   static   readonly  RegexOptions Options  =  RegexOptions.IgnorePatternWhitespace  |  RegexOptions.Singleline;

    [Microsoft.SqlServer.Server.SqlFunction]
    
public   static   string  RegexValue(SqlChars input, SqlString pattern)
    {
        Regex regex 
=   new  Regex(pattern.Value, Options);

        
return   regex.Match( new   string (input.Value)).Value;
    }
}

 

2009032123495088.jpg

 

4、Sql 查询分析器

    2009032123510623.jpg

为了确保SQL可以执行托管代码,执行下面的语句: 

EXEC  sp_configure  ' clr enabled ' 1

RECONFIGURE

select  dbo.RegexValue( ' 2008-09-02 ' ,N ' \d{4} '

转载于:https://www.cnblogs.com/SealedLove/archive/2009/03/21/1418728.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server ,可以使用 `LIKE` 运算符结合通配符实现类似正则表达式的匹配。但是,`LIKE` 运算符所使用的通配符只有 `%` 和 `_`,不能完全替代正则表达式。 如果需要使用正则表达式匹配一个字段,可以考虑使用 CLR (Common Language Runtime) 存储过程或函数。CLR 是一种使用 .NET Framework 编写、在 SQL Server 运行的代码。通过使用 CLR,可以调用 .NET Framework 的正则表达式库,实现更加灵活的匹配操作。 以下是一个使用 CLR 实现正则表达式匹配的示例: 首先,需要在 SQL Server 启用 CLR: ```sql EXEC sp_configure 'clr_enabled', 1; RECONFIGURE; ``` 然后,创建一个 CLR 存储过程或函数,其使用 .NET Framework 的 `System.Text.RegularExpressions` 类库实现正则表达式匹配。例如,下面是一个使用 CLR 实现正则表达式匹配的存储过程: ```csharp using System; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; using System.Text.RegularExpressions; public class RegExMatch { [SqlProcedure] public static void MatchString(SqlString input, SqlString pattern) { // 使用正则表达式匹配 Match match = Regex.Match(input.Value, pattern.Value); // 输出匹配结果 SqlContext.Pipe.Send(match.Success ? match.Value : "No match found."); } } ``` 在上面的代码使用 `System.Text.RegularExpressions` 类库的 `Match` 类完成正则表达式的匹配操作。存储过程接受两个参数:需要匹配的字符串和正则表达式字符串。如果匹配成功,将输出匹配结果;否则输出“No match found.”。 在 SQL Server 创建 CLR 存储过程的方法很多,可以使用 Visual Studio 创建 CLR 项目,也可以使用 SQL Server Management Studio 的“新建CLR项目”向导。创建好存储过程后,可以使用以下语句在 SQL Server 执行: ```sql EXEC RegExMatch 'Hello, world!', 'Hello'; ``` 这个例子会返回 'Hello',因为 'Hello' 匹配了 'Hello, world!' 的 'Hello'。 需要注意的是,CLR 存储过程需要在 SQL Server 启用 CLR 并设置安全级别。如果 CLR 存储过程使用了外部程序集或访问了网络资源,还需要将这些资源添加到 SQL Server 的白名单
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值