[转]在SQL中用正则表达式替换html标签

本文转自:http://blog.csdn.net/dhttaso/article/details/6045380

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

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

 

 

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

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

 

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

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

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

  1. using System; 
  2. using System.Data; 
  3. using System.Data.SqlClient; 
  4. using System.Data.SqlTypes; 
  5. using Microsoft.SqlServer.Server; 
  6. using System.Text.RegularExpressions; 
  7. public partial class UserDefinedFunctions 
  8.     publicstaticreadonly RegexOptions Options = RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline; 
  9.     [Microsoft.SqlServer.Server.SqlFunction] 
  10.     publicstatic SqlString ReplaceHtml(SqlChars input, SqlString pattern,SqlString replace) 
  11.     { 
  12.         // 在此处放置代码 
  13.         Regex regex = new Regex(pattern.Value, Options); 
  14.         return regex.Replace(newstring(input.Value),replace.Value); 
  15.     } 
  16. }; 

 

 

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

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

 

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

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.ReplaceHtml('<p>aaa</p>','<(.[^>]*)>','')

结果为:aaa

posted on 2013-11-25 13:38  freeliver54  阅读(4506)  评论(0编辑  收藏  举报

导航