SQL Server通过外部程序集注册正则表达式函数(CLR函数)

Posted BingCorePower

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server通过外部程序集注册正则表达式函数(CLR函数)相关的知识,希望对你有一定的参考价值。

1.下载dll程序集(通过C#编写的支持正则的方法),百度网盘下载:

  1.1如果只想用,可以直接下载MSSQLRegexExtend.dll
  https://pan.baidu.com/s/1qX8eHa8
  1.2正则程序集对应的解决方案MSSQLRegexExtend.sln,已打包
  https://pan.baidu.com/s/1qXZja9m

2.SQL Server数据库注册程序集

CREATE ASSEMBLY AssemblyRegex from ‘D:\MSSQLRegexExtend\MSSQLRegexExtend.dll‘ 
WITH PERMISSION_SET = SAFE 

3.设置开启支持CLR

 

EXEC SP_CONFIGURE ‘clr enabled‘, 1 
RECONFIGURE         

 

4.创建支持正则匹配的标量函数  

--DROP FUNCTION [dbo].[RegexMatch]  
CREATE FUNCTION [dbo].[RegexMatch](@Regex [nvarchar](max),@Input [nvarchar](max))  
RETURNS [nvarchar](max) WITH EXECUTE AS CALLER  
AS   
EXTERNAL NAME [AssemblyRegex].[MSSQLRegexExtend.RegexExtend].[Match]  

 

5.创建支持正则替换的标量函数 

--DROP FUNCTION [dbo].[RegexReplace]  
CREATE FUNCTION [dbo].[RegexReplace](@Regex [nvarchar](max),@Input [nvarchar](max),@Replace [nvarchar](max))  
RETURNS [nvarchar](max) WITH EXECUTE AS CALLER  
AS   
EXTERNAL NAME [AssemblyRegex].[MSSQLRegexExtend.RegexExtend].[Replace]  

6.创建支持正则校验的标量函数  

--DROP FUNCTION [dbo].[RegexIsMatch]  
CREATE FUNCTION [dbo].[RegexIsMatch](@Regex [nvarchar](max),@Input [nvarchar](max))  
RETURNS [bit] WITH EXECUTE AS CALLER  
AS   
EXTERNAL NAME [AssemblyRegex].[MSSQLRegexExtend.RegexExtend].[IsMatch]  

附部分简单正则:

/*

.  匹配除换行符以外的任意字符 
\w 匹配字母或数字或下划线或汉字 
\s 匹配任意的空白符 
\d 匹配数字 
\b 匹配单词的开始或结束 
^  匹配字符串的开始 
$  匹配字符串的结束 

*/

/*

*     重复零次或更多次 
+     重复一次或更多次 
?     重复零次或一次 
{n}   重复n次 
{n,}  重复n次或更多次 
{n,m} 重复n到m次 

\W       匹配任意不是字母,数字,下划线,汉字的字符 
\S       匹配任意不是空白符的字符 
\D       匹配任意非数字的字符 
\B       匹配不是单词开头或结束的位置 
[^x]     匹配除了x以外的任意字符 
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符 



IP地址匹配: ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

(\d{1,3}\.){3}\d{1,3}是一个简单的IP地址匹配表达式。表达式顺序分析: 
 
\d{1,3}匹配1到3位的数字,

(\d{1,3}\.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,

最后再加上一个一到三位的数字(\d{1,3})。

*/

  

  

 

 

  




以上是关于SQL Server通过外部程序集注册正则表达式函数(CLR函数)的主要内容,如果未能解决你的问题,请参考以下文章

Sql Server 使用正则表达式

带正则表达式的参数化 SQL、ORACLE 与 SQL Server

SQL Server中利用正则表达式替换字符串

sql server 查找与替换 正则表达式 匹配

在 SQL Server 中使用正则表达式

使 SQL Server 中的正则表达式搜索更高效