正則表達式在MS SQL Server中的應用

正則表達式在MS SQL Server中的應用
Oracle數據庫默認就提供了正則表達式(詳見 維基百科)支持,如: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對正則表達式的支持。主要運用CLR自行編寫了如下5個標量函數:REGEXP_LIKE(),REGEXP_INSTR(),REGEXP_INSTR2(),REGEXP_SUBSTR(),REGEXP_REPLACE()。正則表達式


功能說明:數據庫

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

部署:
1.需部署在數據庫服務器上;
2.環境要求:.Net Framework 3.5 (操做系統只測試過64位,32位未測試過);
3.下載程序,放到C:\WINDOWS目錄(固然,也能夠是其它目錄,但須要本身改部署腳本);程序下載連接
4.下載部署腳本;部署腳本下載連接
5.運行
SQL Server Management Studio,登陸並指定要使用正則表達式的庫,打開並執行部署腳本便可


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

 (放在當前的語境中,就是找出用戶表姓名字段中包含疊字的信息服務器


Oracle


Sql Server函數

結果一致。


本文出自 「涼風動水碧蓮香」 博客,轉載請與做者聯繫!測試

相關文章
相關標籤/搜索