参考文章MSSQLSERVER接入c#clr程序集,使c#函数变sql函数正则表达式30分钟入门教程SQL中采用Newtonsoft.Json处理json字符串操作步骤1.新建项目-已安装-模版-其它语言-SQL Server2.项目右键-添加-新建项-...
参考文章
MSSQLSERVER接入c#clr程序集,使c#函数变sql函数
正则表达式30分钟入门教程
SQL中采用Newtonsoft.Json处理json字符串
操作步骤
1.新建项目->已安装->模版->其它语言->SQL Server
2.项目右键->添加->新建项->SQL CLR C#->SQL CLR C# 用户定义的函数
3.C# 的函数方法
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Text.RegularExpressions;
public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction]
public static SqlBoolean IsMatch(string Input, string Pattern)
{
return new SqlBoolean(Regex.IsMatch(Input, Pattern));
}
[Microsoft.SqlServer.Server.SqlFunction]
public static SqlString RegexReplace(string Input, string Pattern, string Replacement)
{
return new SqlString(Regex.Replace(Input, Pattern, Replacement));
}
}
4.程序发布(方法一):
a.程序发布前调整一下项目属性中目标平台和目标框架,我这里用的是SQL Server 2008 框架为.Net 3.5
b.开启数据库服务器配置选项clr enabled
选择数据库 在所选数据库上执行
---开启所有服务器配置选项
EXEC sp_configure N'show advanced options', N'1'
RECONFIGURE WITH OVERRIDE
--开启clr enabled 选项
EXEC sp_configure N'clr enabled', N'1'
RECONFIGURE WITH OVERRIDE
--关闭所有服务器配置选项
EXEC sp_configure N'show advanced options', N'0'
RECONFIGURE WITH OVERRIDE
--如果存在权限问题,执行下面一段脚本
alter database [master] set TRUSTWORTHY on
EXEC sp_changedbowner 'sa'
c.项目->右键->发布->编辑->选择发布数据库
d.点击发布
4.程序发布(方法二):
前两步骤与方法一相同
a.选中数据库->可编程性->程序集->新建程序集
b.执行注册函数的脚本(在发布时选择生成脚本)
GO
CREATE FUNCTION [dbo].[IsMatch]
(@Input NVARCHAR (4000), @Pattern NVARCHAR (4000))
RETURNS BIT
AS
EXTERNAL NAME [Regex].[UserDefinedFunctions].[IsMatch]
GO
CREATE FUNCTION [dbo].[RegexReplace]
(@Input NVARCHAR (4000), @Pattern NVARCHAR (4000), @Replacement NVARCHAR (4000))
RETURNS NVARCHAR (4000)
AS
EXTERNAL NAME [Regex].[UserDefinedFunctions].[RegexReplace]
5.测试使用
select dbo.IsMatch('123abc','\d{2}') --查找连续2位数字
select dbo.IsMatch('123abc','\d{4}') --查找连续4位数字
select dbo.RegexReplace('123abc','\d{3}','ABC') --替换连续3位数字为ABC
结果:
本文标题为:SQL Server 2008 通过C# CLR 使用正则表达式
基础教程推荐
- C# string转换为几种不同编码的Byte[]的问题解读 2023-07-18
- C#中多线程ManualResetEvent 与 AutoResetEvent 区别 2023-03-04
- C#深浅拷贝的深入解析 2023-02-02
- c# – 在内存中格式化SyntaxTree的最佳方法是什么? 2023-09-20
- c# – 使dapper SQL成为语法颜色 2023-11-25
- 详解c# AutoMapper 使用方式 2022-11-27
- c# wpf如何附加依赖项属性 2023-04-10
- C#/VB.NET 将Word与Excel文档转化为Text 2023-06-27
- Unity实现截图功能 2023-02-16
- 详解DataGridView控件的数据绑定 2023-05-22