欢迎投稿

今日深度:

使用VS2013创建数据库项目实现MSSQL正则方法,vs

使用VS2013创建数据库项目实现MSSQL正则方法,vs2013mssql


实现步骤

1:创建数据库项目



2:引用相关库,简单实现代码如下


using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Text.RegularExpressions;

public partial class RegexSql
{
    [Microsoft.SqlServer.Server.SqlFunction]
    public static SqlBoolean Regex_IsMatch(string input, string regex)
    {
        return new SqlBoolean(Regex.IsMatch(input, regex, RegexOptions.IgnoreCase));
    }

    [Microsoft.SqlServer.Server.SqlFunction]
    public static SqlString Regex_Match(string input, string regex)
    {
        return new SqlString(Regex.Match(input, regex, RegexOptions.IgnoreCase).Value);
    }
}

3:在MSSQL中添加程序集




如果失败请先执行脚本

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
  ALTER DATABASE [DB_NAME] set TRUSTWORTHY on;
go

4:创建关联函数

create function Regex_Match
( @input as nvarchar(1000), @regex as  nvarchar(100) 
)
returns nvarchar(1000)
as
  external  name Iftrue_Regex.RegexSql.Regex_Match;
go

create function Regex_IsMatch
( @input as nvarchar(1000), @regex as  nvarchar(100) 
)
returns bit
as
  external  name Iftrue_Regex.RegexSql.Regex_IsMatch;
go

5:使用函数实现正则匹配

  select dbo.Regex_IsMatch('abcde123asdf234','[b-s]+')
  select dbo.Regex_Match('abcde123asdf234','[b-s]+')

注:以上实现是基于framework3.5,在framework4.0下添加程序集会出错,同样方式可以实现很多数据库本身不便实现的功能,如:调用WEB API、WEBSERVICE等

代码下载


VS2013创建数据库出错,指点

你的服务器名称错误,获取你的SqlServer不允许程序用Windows认证方式登入。
 

在ms sql中怎使用正则表达式,给出简单示例,注释越详细越好感激不尽

MS SQL不支持正则表达式,可以用CLR实现。
1、 新建一个 MSSQL的数据库项目,配置到你的数据库中
2、 在数据库项目中新建一个函数库,编写如下代码:
/// <summary>
/// 验证是否符合正则表达式
/// </summary>
[SqlFunction]
public static SqlBoolean RegexIsMatch(string input, string regex)
{
return new SqlBoolean(Regex.IsMatch(input, regex, RegexOptions.IgnoreCase));
}
然后在数据库项目上点击“右键”,选择“部署”
PS:此功能需要MSSQL2005或者以上版本支持
如果你使用的是.NET 3.5版本的话,需要在数据库服务器上安装.net framework 3.5
目前SQLSERVER CLR 不支持.NET 4.0,所以如果你使用VS2010开发的话需要把项目版本修改成为.NET 2.0/3.5
使用方法:
SELECT * FROM [table] WHERE dbo.RegexIsMatch([ID],'^\d+$') = 1



 

www.htsjk.Com true http://www.htsjk.com/shujukunews/3406.html NewsArticle 使用VS2013创建数据库项目实现MSSQL正则方法,vs2013mssql 实现步骤 1:创建数据库项目 2:引用相关库,简单实现代码如下 using System;using System.Data;using System.Data.SqlClient;using System.Data.SqlTyp...
评论暂时关闭