SQL Server 调用 C# 方法实现正则表达式验证

时间:2023-03-09 07:38:25
SQL Server 调用 C# 方法实现正则表达式验证

Ø  前言

1.   在 SQL Server 中默认是不支持正则表达式验证的,如果需要某个字符串匹配一个正则表达式的验证规则,就需要额外的编写 C# 方法,并发布到 SQL Server 数据库中。

2.   很幸运,在 VS 2005 之后的版本中,都支持创建 SQL Server 数据库项目,在该项目中可以创建支持调用 C# 函数的存储过程、函数、触发器等等。

3.   本文主要学习以下几点:

1)   在 VS 2013 中创建 SQL Server 数据库项目。

2)   创建 C# 函数(完成正则表达式验证)。

3)   发布 C# 函数到 SQL Server 数据库中。

4)   SQL Server 调用正则表达式验证函数(标量值函数)。

1.   在 VS 2013 中创建 SQL Server 数据库项目

1)   右键解决方案,选择添加 -> 新建项目 -> 其他语言 -> SQL Server -> SQL Server 数据库项目,如图:

SQL Server 调用 C# 方法实现正则表达式验证

2.   创建 C# 函数(完成正则表达式验证)

1)   右键 SQL Server 数据库项目,选择添加 -> 新建项 -> SQL CLR C# -> SQL CLR C# 用户定义的函数,如图:

SQL Server 调用 C# 方法实现正则表达式验证

2)   默认,级别 16,状态 1,第 1 行 为程序集“SQLServerDBProject”执行 CREATE ASSEMBLY 时失败,因为该程序集是为公共语言用户时的不受支持的版本生成的。”错误,如图:

SQL Server 调用 C# 方法实现正则表达式验证

5)   该错误是因为公共语言运行库,不支持 .NET Framework 3.5 以上版本,将该项目的“目标框架”设置为 .NET Framework 3.5 即可,如图:

SQL Server 调用 C# 方法实现正则表达式验证

4.   SQL Server 调用正则表达式验证函数

1)   发布成功后,C# 函数就会生成对应的数据库标量值函数,如图:

SQL Server 调用 C# 方法实现正则表达式验证

2)   调用函数(完成正则表达式验证)

SELECT

dbo.RegexMatch('Amoi0618@126.com', '^[a-z0-9]+@\d+\.com$', 0) AS 不区分大小写,

dbo.RegexMatch('Amoi0618@126.com', '^[a-z0-9]+@\d+\.com$', 1) AS 区分大小写;

SQL Server 调用 C# 方法实现正则表达式验证

Ø  总结

1.   本文主要研究的是 C# 创建数据库标量值函数,完成正则表达式验证。

2.   其实,还有存储过程触发器等等,在有必要时应该也是很有用的。

1)   存储过程:数据库以存储过程的形式,调用 C# 方法。

2)   触发器:当数据库触发器触发时,调用 C# 方法。

3.   先到这里,后续继续研究。