• 在SQL中使用自定义函数


     

    由于数据库的一个表字段中多包含html标签,现在需要修改数据库的字段把html标签都替换掉。当然我可以通过写一个程序去修改,那毕竟有点麻烦。直接在查询分析器中执行,但是MS SQL Server并没有提供正则表达式,替换html标签可不那么容易。我们可以通过CLR托管来实现一个通过正则表达式来替换html标签的自定义函数。(注:SQL CLR只能在MS SQL Server 2005或以上版本中适用)

    第一步:通过Visual Studio 2008新建一个SQL Server项目

     

    第二步:配置连接的数据库

    点击上一步确定后,出现如下提示框

     

    可以通过 添加新引用 来添加一个数据库连接(只适用MS SQL Server 2005或以上版本,再次提醒哦),添加以后选择其中一个数据库点击确定。

    第三步:添加一个自定义函数

     

    然后编写自定义函数的类(需要注意的是类的方法必须是静态的)

    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

    {

        public static readonly RegexOptions Options = RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline;

        [Microsoft.SqlServer.Server.SqlFunction]

        public static SqlString RegexReplace(SqlChars input, SqlString pattern, SqlString replace)

        {

            Regex regex = new Regex(pattern.Value, Options);

     

            return regex.Replace(new string(input.Value), replace.Value);

        }

    };

    第四步:部署,类编写完成后进行部署

     

    部署了以后,你指定的连接数据库下面会生成一个自定义函数和一个程序集(如图)

     

    然后就可以调用自定义函数了,不过调用自定义函数前,你还得启用一些配置

    EXEC sp_configure 'allow updates',0

    EXEC sp_configure 'show advanced options', 1 -- make them available

    reconfigure

    EXEC sp_configure 'clr enabled', 1 -- turn on OLE

    reconfigure

    启用这些配置后,你就可以调用刚刚自定义的函数了.

    调用

     select dbo.RegexReplace('<p>aaa</p>','<(.[^>]*)>','')

    结果为:aaa

  • 相关阅读:
    基于 HTML5 + WebGL 的 3D 风力发电场
    基于HTML5 WebGL的工业化3D电子围栏
    基于 HTML5 WebGL 和 VR 技术的 3D 机房数据中心可视化
    基于 HTML5 Canvas 的 Web SCADA 组态电机控制面板
    基于 HTML5 WebGL 与 WebVR 3D 虚拟现实的可视化培训系统
    基于 HTML5 WebGL 的 3D 服务器与客户端的通信
    什么是 SUID, SGID 和 Sticky bit
    贝塞尔曲线切割圆角
    iOS-获取当前View所在的控制器
    block(八)作用域
  • 原文地址:https://www.cnblogs.com/lgx5/p/5930234.html
Copyright © 2020-2023  润新知