文章目录
构建类库
- 创建.net类库
- 创建正则比较方法
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);
}
}
}
- 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