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

原文:在SQL中用正则表达式替换html标签

 

由于数据库的一个表字段中多包含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 ReplaceHtml(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.ReplaceHtml('<p>aaa</p>','<(.[^>]*)>','')

结果为:aaa

 

 

 

时间: 2024-08-28 06:50:49

在SQL中用正则表达式替换html标签的相关文章

SQL Server正则表达式 替换函数应用详解_MsSql

--SQL正则替换函数 复制代码 代码如下: CREATE function dbo.regexReplace ( @source ntext, --原字符串 @regexp varchar(1000), --正则表达式 @replace varchar(1000), --替换值 @globalReplace bit = 1, --是否是全局替换 @ignoreCase bit = 0 --是否忽略大小写 ) returnS varchar(1000) AS begin declare @hr

正则表达式,替换所有HTML标签的简单实例_javascript技巧

我自己写了一个正则表达式,<(.|\n)+?> 这个是替换所以HTML标签,非贪婪的,多行的. 如果我想替换得到所以非HTML标签, 我的代码就只能是这样,先找打HTML标签,然后将标签替换掉. 能不能直接找到非HTML标签呢.. 还有个问题就是,,截取字符串的长度. 我下面的这种方法,没有判断中文或者非中文,截取的长度总是有长有短. 不知道有没有好点的办法让截取的长度,一样长的,而不是str.Length的长度. public static string formatString(strin

PHP实现通过正则表达式替换回调的内容标签_php技巧

本文实例讲述了PHP实现通过正则表达式替换回调的内容标签.分享给大家供大家参考.具体实现方法如下: function my_wp_plugin_tag_action($content,$tag,$function,$args = FALSE) { // match all regular expressions preg_match_all($tag,$content,$matches); if (count($matches)>0) { // filter duplicates $matche

PHP实现通过正则表达式替换回调的内容标签

  本文实例讲述了PHP实现通过正则表达式替换回调的内容标签.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 function my_wp_plugin_tag_action($content,$tag,$function,$args = FALSE) { // match all regular expressions preg_match_all($tag,$content,$match

C#正则表达式批量替换自定义标签的内容求代码

问题描述 C#正则表达式批量替换自定义标签的内容求代码 string str="" {list:title} /Fd:list {list:title} /Fd:list "";替换结果str="" {list:title} {list:title} "";num属性是显示条数,field类别栏目id 循环Fd:list标签里面的内容 解决方案 num属性在哪里? 帖全一下你的HTML 解决方案二: string str=&q

asp.net里面如何用正则表达式替换掉很多个相同的标签?替换的内容不相同

问题描述 asp.net里面如何用正则表达式替换掉很多个相同的标签?替换的内容不相同我在模板里面有很多个[title]标签,我怎么一个个替换成数据库不同行的内容? 解决方案 解决方案二:用MatchEvaluator,大概这样voidMethod1(){strings=".........";Regexre=newRegex("...");s=re.Replace(s,newMatchEvaluator(MatchMethod));}inti=0;stringMat

SQL Server中利用正则表达式替换字符串的方法

建立正则替换函数,利用了OLE对象,以下是函数代码: --如果存在则删除原有函数 IF OBJECT_ID(N'dbo.RegexReplace') IS NOT NULL DROP FUNCTION dbo.RegexReplace GO --开始创建正则替换函数 CREATE FUNCTION dbo.RegexReplace ( @string VARCHAR(MAX), --被替换的字符串 @pattern VARCHAR(255), --替换模板 @replacestr VARCHAR

Dreamweaver中使用正则表达式替换href中的内容

 可能在dw中使用正则表达式替换字符串的朋友很少,下面我来给大家介绍Dreamweaver中使用正则表达式替换href中的内容吧.    在Dreamweaver中使用正则表达式替换href中的内容,就像下面这些href中的内容复杂多样的情况下,href="/html/u.html",href="/tuho/huko.html",想将它们全部替换成href="#" ,具体做法如下: 查找: href="[^"]*"

JS正则表达式替换页面中内容

问题描述 JS正则表达式替换页面中内容 我想用正则表达式替换table中除了标签""<tr class=""template"" ng-repeat=""model in model.child""></td>""里面的ng-model中的内容,将ng-model=""model.*""替换成ng-model="&