Regex在MS SQL Server中的應用

來源:互聯網
上載者:User

Regex在MS SQL Server中的應用 Oracle資料庫預設就提供了Regex詳見維基百科)支援,如:REGEXP_LIKE(),REGEXP_INSTR(),REGEXP_SUBSTR(),REGEXP_REPLACE()),而不思進的MS SQL Server卻沒有直接提供。不過MS留了一手,那就是CLR是通用語言執行平台,Common Language Runtime)。SQL SERVER 2005及以上的版本都可以運用此方法。MS是為了推.NET而這樣乾的嗎?

言歸正傳,我這裡完全參照Oracle實現了MS SQL Server對Regex的支援。主要運用CLR自行編寫了以下5個純量涵式:REGEXP_LIKE(),REGEXP_INSTR(),REGEXP_INSTR2(),REGEXP_SUBSTR(),REGEXP_REPLACE()。


功能說明:

1.Regexp_Like(soure,pattern)
  檢查源字串中是否存在匹配Regex的字串,存在返回1,不存在返回0
  source:源字串
  pattern:Regex
2.Regexp_InStr(soure,pattern,position,num)
  匹配源字串與Regex,返回匹配的起始位置值。
  source:源字串
  pattern:Regex
  possition:字串開始位置
  num:返回第n個匹配  
3.Regexp_InStr2(soure,pattern)
  匹配源字串與Regex,返回第1個匹配的起始位置值。
  (實際上是Regexp_InStr()的重載。因MS SQL不支援重載,所以另外命名)
  source:源字串
  pattern:Regex  
4.Regexp_SubStr(soure,pattern)
  匹配源字串與Regex,返回匹配的子字串。
  source:源字串
  pattern:Regex  
5.Regexp_Replace(soure,pattern,replace_string)
匹配源字串與Regex,傳回值等於將匹配部分替換為指定字串的新字串。
  source:源字串
  pattern:Regex  
  replace_string:用於替換的字串

部署:
1.需部署在資料庫伺服器上;
2.環境要求:.Net Framework 3.5 作業系統只測試過64位,32位未測試過);
3.下載程式,放到C:\WINDOWS目錄當然,也可以是其它目錄,但需要自己改部署指令碼);程式下載連結
4.下載部署指令碼;部署指令碼下載連結
5.運行SQL Server Management Studio,登入並指定要使用Regex的庫,開啟並執行部署指令碼即可。

驗證:
說明:
1. 此處使用Oracle原生函數執行結果和自行編寫的CLR執行結果進行對比;
2. Regex'(\w)\1'的作用:匹配字串中重複出現的任何單詞字元;

 放在當前的語境中,就是找出使用者表姓名欄位中包含疊字的資訊650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131229/130032KC-0.gif" /> )


Oracle:

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131229/130032NY-1.png" style="float:none;" title="1.png" />


Sql Server:

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131229/13003220P-2.png" style="float:none;" title="2.png" />

結果一致。650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131229/130032H10-3.gif" />


本文出自 “涼風動水碧蓮香” 部落格,轉載請與作者聯絡!

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.