博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在SQL中使用自定义函数
阅读量:6933 次
发布时间:2019-06-27

本文共 1365 字,大约阅读时间需要 4 分钟。

 

由于数据库的一个表字段中多包含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

 

转载于:https://www.cnblogs.com/lgx5/p/5930234.html

你可能感兴趣的文章
Python的pyroute2网络模块
查看>>
从零开始学Win32平台缓冲区溢出(Part1)
查看>>
一朵为员工赋能的“美”云
查看>>
PostgreSQL Oracle 兼容性之 - PL/SQL DETERMINISTIC 与PG函数稳定性(immutable, stable, volatile)...
查看>>
万万想不到,你是这样的“闲鱼”!
查看>>
Logstash 推送告警到阿里钉钉(Dingtalk)
查看>>
软银机器人Pepper上岗必胜客,顾客可通过机器人预订披萨
查看>>
较主流的消息队列的比较与选型
查看>>
SQL SERVER全面优化-------写出好语句是习惯
查看>>
安卓 AsyncHttpClient - “Content-Type not allowed!”
查看>>
samba
查看>>
虚拟机克隆步骤
查看>>
ListView使用技巧
查看>>
MySQL共享存储主备模式利用Keepalived实现双机高可用
查看>>
作为AI的“辅助大臣”,区块链的前途不可限量
查看>>
学习笔记:vsphere6 迁移物理机,指定被迁移的IP报错
查看>>
都说做ToB商业模式,VR AR博物馆内容的矿或许可以挖下
查看>>
JQuery用户名无刷新验证
查看>>
ubuntu安装和查看已安装
查看>>
[Linux]Shell的运算符和特殊变量
查看>>