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})。

*/

  

  

 

 

  

时间: 2024-07-29 23:27:00

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

Sql Server 添加外部程序集基本操作

原文:Sql Server 添加外部程序集基本操作 简介:有时候Sql Server的内置函数没有那么好用的时候,可以引用一下外部程序集,下面献下丑,做下添加外部程序集操作 1.准备程序,编译出一个MyCLR的DLL. public class CLRClass { [Microsoft.SqlServer.Server.SqlFunction] public static int MyFun(int a, int b) //必须使用静态方法,非静态方法会报错. { return a <= b

SQL Server对比两字段的相似度(函数算法)

原文:SQL Server对比两字段的相似度(函数算法) 相似度函数 概述    比较两个字段的相似度    最近有人问到关于两个字段求相似度的函数,所以就写了一篇关于相似度的函数,分别是“简单的模糊匹配”,“顺序匹配”,“一对一位置匹配”.在平时的这种函数可能会需要用到,可能业务需求不一样,这里只给出参照,实际情况可以相对修改. 本文所有的两个字段比较都是除以比较字段本身,例如A与B比较,找出的长度除以A的长度,因为考虑如果A的长度大于B的长度,相似度会超100%,例如‘abbc’,'ab'.

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

?  前言 1.   在 SQL Server 中默认是不支持正则表达式验证的,如果需要某个字符串匹配一个正则表达式的验证规则,就需要额外的编写 C# 方法,并发布到 SQL Server 数据库中. 2.   很幸运,在 VS 2005 之后的版本中,都支持创建 SQL Server 数据库项目,在该项目中可以创建支持调用 C# 函数的存储过程.函数.触发器等等. 3.   本文主要学习以下几点: 1)   在 VS 2013 中创建 SQL Server 数据库项目. 2)   创建 C#

sql server去除字符串空格的ltrim()和rtrim()函数

SQL Server并不提供trim()函数去除字符串两边空格,只提供了去除字符串左边空格的ltrim()函数和去除字符串右边空格的rtrim()函数,但是只要将这两个函数配合使用,就能达到去除字符串两端空格的效果. ltrim()函数的使用. select ltrim(' haha '); rtrim()函数的使用. select ltrim(' hehe '); ltrim()函数和rtrim()函数配合使用. select rtrim(ltrim(' hoho ')); 当然了,也可以用r

Red Gate(SQLToolbelt)SQL Server的安装与注册(破解)

Red Gate(SQLToolbelt)是SQL Server辅佐工具 1.SQL Compare 比较和同步SQL Server数据库结构 2.SQL Data Compare 比较和同步SQL Server数据库内容 3.SQL Source Control 将现有源程序控制系统连接到SQL Server4.SQL Prompt 轻松写入,编辑和探索SQL5.SQL Test 在SQL Server Management Studio中进行数据库单元测试6.SQL Data Generat

SQL Server 2012 新特性:新增和修改函数

转换函数      1.PARSE Parse是把字符串类型转化为想要的类型,看看和convert和cast的区别 SELECT PARSE ('2.111111' AS float ),CAST ('2.111111111111' AS FLOAT) ---------------------- ---------------------- 2.111111               2.111111111111 (1 row (s ) affected ) SELECT PARSE ('1

SQL Server 2008 R2如何使用正则表达式搜索

正则表达式是简明而灵活的表示法,用于查找和替换各种模式的文本.在 SQL Server Management Studio 的“查找和替换”对话框中的“查找内容”字段中,可以使用一组特定的正则表达式. 使用正则表达式进行查找 若要在“快速查找”.“在文件中查找”.“快速替换”或 “在文件中替换” 操作过程中,在“查找内容”字段启用正则表达式,请在“查找选项”下选中“使用”,再选择“正则表达式”. “查找内容”字段旁边的“引用列表”三角形按钮将变为可用状态.单击此按钮可显示一组最常用的正则表达式.

SQL Server性能优化(1)使用SET函数

在一切开始之前,先看下微软的建议:在系统的整体性能优化里面, TSQL优化优先级并不是最高的. 本文包括四部分: SET STATISTICS TIME ON SET STATISTICS IO SET SHOWPLAN_ALL ON SET STATISTICS PROFILE ON SET 函数主要是为了显示sql执行时的查询计划,CPU.硬盘使用情况. 1. SET STATISTICS TIME ON:当 SET STATISTICS TIME 为 ON 时,会显示语句的时间统计信息.为

SQL Server判断数据库、表、存储过程、函数是否存在

--判断数据库是否存在 if exists (select * from sys.databases where name = '数据库名') drop database [数据库名] --判断表是否存在 if exists (select * from sysobjects where id = object_id(N'[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [表名] --判断存储过程是否存在 if exist