[轉]在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或以上版本,再次提醒哦),添加以后選擇其中一個數據庫點擊確定。

第三步:添加一個自定義函數

然后編寫自定義函數的類(需要注意的是類的方法必須是靜態的)

[c-sharp] view plain copy print ?
  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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM