sqlserver 执行正则表达式,调用c# 函数、代码

落日映苍穹つ 2024-02-17 15:55 13阅读 0赞

--1.新建SqlServerExt项目,编写 C# 方法生成 SqlServerExt.dll 文件
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Text.RegularExpressions;
using Microsoft.SqlServer.Server;

namespace Ext
{
public static partial class DataBase
{
///


/// 正则表达式
///

/// 输入字符
/// 正则表达式
///
[Microsoft.SqlServer.Server.SqlFunction]
public static SqlBoolean Regex(SqlChars input, SqlString pattern)
{
try
{
Regex regex = new Regex(pattern.Value);
return new SqlBoolean(regex.IsMatch(new string(input.Value)));
}
catch
{
return new SqlBoolean(false);
}
}
}
}

--2.在SqlServer 中注册程序集
CREATE ASSEMBLY Udf
FROM ‘D:\…….\SqlServerExt.dll’

WITH PERMISSION_SET = SAFE;

--2.1 删除已注册的程序集 Udf
--DROP ASSEMBLY Udf;

--3.创建一个sql 函数
CREATE FUNCTION Regex
(
@input NVARCHAR(4000) ,
@pattern nvarchar(4000)
)
RETURNS bit
AS
EXTERNAL NAME [Udf].[Ext.DataBase].[Regex] ;
--EXTERNAL NAME [Sql中程序集名].[C#命名空间.C#类名].[C#方法名]

--3.1 删除函数
--DROP FUNCTION Regex;

--4.测试正则
--4.1 匹配所有数字
select dbo.regex(‘123asd123’,’^\d+$’);
select dbo.regex(‘123000123’,’^\d+$’);
--4.2 查询mytable表中mycol字段中,包含所有数字的记录
select top 10 * from [mytable] where dbo.regex([mycol],’^\d+$’);

--5.执行 自定义函数异常时
--消息 6263,级别 16,状态 1,第 2 行
--禁止在 .NET Framework 中执行用户代码。启用 “clr enabled” 配置选项。
/*
--出现如下提示时,执行下方代码
--消息 6263,级别 16,状态 1,第 2 行
--禁止在 .NET Framework 中执行用户代码。启用 “clr enabled” 配置选项。

exec sp_configure ‘show advanced options’, ‘1’;
go
reconfigure;
go
exec sp_configure ‘clr enabled’, ‘1’
go
reconfigure;
exec sp_configure ‘show advanced options’, ‘1’;
go
*/

发表评论

表情:
评论列表 (有 0 条评论,13人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C# 表达式

    正则表达式 是一种匹配输入文本的模式。 .Net 框架提供了允许这种匹配的正则表达式引擎。 模式由一个或多个字符、运算符和结构组成。 如果你还不理解正则表达式可以阅读我们

    相关 C++ 表达式

    简介 使用正则表达式来处理字符串是非常方便的,它的处理流程为 1. 用正则表达式定义要匹配的字符串的规则 2. 然后对目标字符串进行匹配 3. 最后对匹配到的结果

    相关 C#表达式

    没用到多少正则的判断,有点懒,闲着写的。主要写java的时候会具体,C\不想弄了。 1、画窗体: ![Image 1][] 2、实现判断类,其中写入错误日志,暂时可

    相关 C++表达式

    正则表达式(regular expression)是计算机科学中的一个概念,又称规则表达式,通常简写为regex、regexp、RE、regexps、regexes、regex