SQLserver中使用正则表达式
发布时间:2020-12-12 13:38:50 所属栏目:MsSql教程 来源:网络整理
导读:一、新建.net类库项目 创建类库项目,名为MSSQLRegexExtend 创建一个类,名为RegexExtend 复制下面代码到类中 using System.Text.RegularExpressions;namespace MSSQLRegexExtend{ public class RegexExtend { /// summary /// 正则匹配 /// /summary /// pa
一、新建.net类库项目
二、将类库注册到MSSQL中 在数据库中执行如下脚本(类库存放地址得自己修改正确)。 --DROP ASSEMBLY Regex CREATE ASSEMBLY Regex from 'E:CSharpMSSQLRegexExtendMSSQLRegexExtendbinReleaseMSSQLRegexExtend.dll' WITH PERMISSION_SET = SAFE --注册.net类库 sp_configure 'clr enabled',1 --将数据库设置为可以使用clr组件 RECONFIGURE --设置可用clr组件。别忘记运行这行进行应用 /****以下代码将类库中的静态方法注册为函数****/ /****正则匹配****/ --DROP FUNCTION [dbo].[Regex.Match] CREATE FUNCTION [dbo].[Regex.Match](@Regex [nvarchar](max),@Input [nvarchar](max)) RETURNS [nvarchar](max) WITH EXECUTE AS CALLER AS EXTERNAL NAME [Regex].[MSSQLRegexExtend.RegexExtend].[Match] /****正则替换****/ --DROP FUNCTION [dbo].[Regex.Replace] CREATE FUNCTION [dbo].[Regex.Replace](@Regex [nvarchar](max),@Input [nvarchar](max),@Replace [nvarchar](max)) RETURNS [nvarchar](max) WITH EXECUTE AS CALLER AS EXTERNAL NAME [Regex].[MSSQLRegexExtend.RegexExtend].[Replace] /****正则校验****/ --DROP FUNCTION [dbo].[Regex.IsMatch] CREATE FUNCTION [dbo].[Regex.IsMatch](@Regex [nvarchar](max),@Input [nvarchar](max)) RETURNS [bit] WITH EXECUTE AS CALLER AS EXTERNAL NAME [Regex].[MSSQLRegexExtend.RegexExtend].[IsMatch] 三、调用示例 SELECT [CustomerID],[CompanyName],[ContactName],[ContactTitle],[City],[Region],[PostalCode],[Country],[Phone],[Fax],[Address],[dbo].[Regex.Match]('(d)+',[Address]) as [门牌号码] --正则匹配,[dbo].[Regex.Replace]('d','*') as [将门牌号码打码] --正则替换 FROM [Northwind].[dbo].[Customers] where [dbo].[Regex.IsMatch]('d',[Address])=1 --正则校验有门牌号码的记录 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |