--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

    {

        /// <summary>

        /// 正則表達式

        /// </summary>

        /// <param name="input">输入字符</param>

        /// <param name="pattern">正則表達式</param>

        /// <returns></returns>

        [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

*/

sqlserver 运行正則表達式,调用c# 函数、代码的更多相关文章

  1. Java正則表達式语法

    Java正則表達式语法 字符 说明 \ 将下一字符标记为特殊字符.文本.反向引用或八进制转义符.比如,"n"匹配字符"n"."\n"匹配换行 ...

  2. javascript——正則表達式

    正則表達式(RegExp对象):主要用于表单验证 1.创建正則表達式: (1).var ret = /pattern/; pattern是内容.能够是正則表達式的内容,能够是字符或是其它的内容 (2) ...

  3. PHP第九课 正則表達式在PHP中的使用

    今天内容 1.正則表達式 2.数学函数 3.日期函数 4.错误处理 正則表達式: 1.模式修正符 2.五个经常使用函数 另外一个正則表達式的站点:http://www.jb51.net/tools/z ...

  4. javascript 正則表達式补充

    定义 JavaScript种正則表達式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串 1. 构造函数 var reg=new RegExp('<%[^%>]+%&g ...

  5. 黑马程序猿————Java基础日常笔记---反射与正則表達式

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 黑马程序猿----Java基础日常笔记---反射与正則表達式 1.1反射 反射的理解和作用: 首 ...

  6. 【C/C++学院】0904-boost智能指针/boost多线程锁定/哈希库/正則表達式

    boost_array_bind_fun_ref Array.cpp #include<boost/array.hpp> #include <iostream> #includ ...

  7. Python——正則表達式(2)

    本文译自官方文档:Regular Expression HOWTO 參考文章:Python--正則表達式(1) 全文下载 :Python正則表達式基础 ======================== ...

  8. Python正則表達式:怎样使用正則表達式

    正則表達式(简称RE)本质上能够看作一个小的.高度专业化的编程语言,在Python中能够通过re模块使用它.使用正則表達式,你须要为想要匹配的字符串集合指定一套规则,字符串集合能够包括英文句子.e-m ...

  9. JavaScript使用正則表達式

    2.0 简单介绍 正則表達式是能够用来查找与给定模式匹配的文本的搜索模式.比如,在上一章中,我们在一个较长的字符串中查找子字符串Cookbook: var testValue = "This ...

随机推荐

  1. Kubernetes本地私有仓库配置

    实验环境 master 10.6.191.181 node1 10.6.191.182 node2 10.6.191.183 本地私有仓库 10.6.191.184 一.安装本地私有仓库 1.安装do ...

  2. kolla-ansible 安装openstack 拉取阿里云镜像时报错

     TASK [mariadb : Pulling mariadb image] ************************************************************ ...

  3. [NOIP2009] 靶形数独(搜索)

    P1074 靶形数独 题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士 ...

  4. WHU 1540 Fibonacci 递推

    武大邀请赛的网络预选赛,就去做了个签到题,居然连这个递推都没推出来,真是惭愧. 而且好久没写矩阵乘法了,来回顾一下. 题意: 求Fibonacci数列的,前n项立方和. 思路: 可以求得一下递推公式: ...

  5. ArcGIS api for javascript——渲染-计算相等间隔分级

    描述 本例展示了如何配置分级渲染使用一个相等间隔分类.在这个分类类型中,断点被设置为相等的距离. 可以手工添加相等距离的断点:然而,如果数据被修改了,那些断点就会是不合理的.本例自动地计算断点,因此相 ...

  6. Objective-C中的同步线程的锁

    概述 在多线程编程中往往会遇到多个线程同时访问共享的资源,这种情况我们需要通过同步线程来避免.也就是给线程加锁. 因为Objective-C是C语言的超集.,严格的来说是真超集.所以C语言当中的pth ...

  7. ORA-01003: no statement parsed

    环境:delphi 5.BDE.oracle10 delphi里面用tStoreProc调用存储过程出现ORA-01003: no statement parsed. 解决方法:tStoreProc. ...

  8. Android 五大存储方式具体解释

    SharedPreferences与Editor SharedPreferences保存的数据仅仅要是类似于配置信息格式的数据.因此它保存的数据主要是简单的key-value对形式.以下关系图 上图全 ...

  9. DECLARE CURSOR (Transact-SQL)

    Defines the attributes of a Transact-SQL server cursor, such as its scrolling behavior and the query ...

  10. shrio 登录/退出

    身份验证,即在应用中谁能证明他就是他本人.一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明. 在shiro中,用户需要提供principals (身份)和cre ...