使用.net类库向sql server中添加正则表达式

构建类库

  1. 创建.net类库
  2. 创建正则比较方法
namespace SqlServerRegex
{
    public class RegexExtend
    {
        [Microsoft.SqlServer.Server.SqlFunction]
        public static bool IsMatch(string regex, string input)
        {
            return !string.IsNullOrEmpty(input) && new Regex(regex).IsMatch(input);
        }
    }
}
  1. rebuild项目

添加到Sql Server

--使数据库受到信任
ALTER DATABASE TestDatabase set TRUSTWORTHY ON;
--注册.net类库,unsafe 不受限制地访问资源
CREATE ASSEMBLY Regex from 'C:\Project\SqlServerRegex\bin\Debug\SqlServerRegex.dll' WITH PERMISSION_SET = UnSafe; 
--将数据库设置为可以使用clr组件
sp_configure 'clr enabled', 1;
--设置可用clr组件。别忘记运行这行进行应用
RECONFIGURE;
--创建函数
CREATE FUNCTION [dbo].[Regex.IsMatch](@Regex [nvarchar](max),@Input [nvarchar](max))
RETURNS [bit] WITH EXECUTE AS CALLER
AS 
EXTERNAL NAME [Regex].[SqlServerRegex.RegexExtend].[IsMatch];

微软官方文档

测试

SELECT *
 FROM dbo.TestRegex
where dbo.[Regex.IsMatch]('\d+',code)!=0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章