在SqlServer2005中使用正则表达式

先创建自定义函数
-----------------------------------------------
create   function   dbo.regexReplace  
  (  
  @source   varchar(5000),         --原字符串  
  @regexp   varchar(1000),         --正则表达式  
  @replace   varchar(1000),       --替换值  
  @globalReplace   bit   =   0,       --是否是全局替换  
  @ignoreCase   bit   =   0               --是否忽略大小写  
  )  
  returnS   varchar(1000)   AS  
  begin  
  declare   @hr   integer  
  declare   @objRegExp   integer  
  declare   @result   varchar(5000)  
   
  exec   @hr   =   sp_OACreate   'VBScript.RegExp',   @objRegExp   OUTPUT  
  IF   @hr   <>   0   begin  
  exec   @hr   =   sp_OADestroy   @objRegExp  
  return   null  
  end  
  exec   @hr   =   sp_OASetProperty   @objRegExp,   'Pattern',   @regexp  
  IF   @hr   <>   0   begin  
  exec   @hr   =   sp_OADestroy   @objRegExp  
  return   null  
  end  
  exec   @hr   =   sp_OASetProperty   @objRegExp,   'Global',   @globalReplace  
  IF   @hr   <>   0   begin  
  exec   @hr   =   sp_OADestroy   @objRegExp  
  return   null  
  end  
  exec   @hr   =   sp_OASetProperty   @objRegExp,   'IgnoreCase',   @ignoreCase  
  IF   @hr   <>   0   begin  
  exec   @hr   =   sp_OADestroy   @objRegExp  
  return   null  
  end    
  exec   @hr   =   sp_OAMethod   @objRegExp,   'Replace',   @result   OUTPUT,   @source,   @replace  
  IF   @hr   <>   0   begin  
  exec   @hr   =   sp_OADestroy   @objRegExp  
  return   null  
  end  
  exec   @hr   =   sp_OADestroy   @objRegExp  
  IF   @hr   <>   0   begin  
  return   null  
  end  
   
  return   @result  
  end  
  GO  

-------------------------------------
配置对扩展存储过程的支持
Microsoft SQL Server 2005 -> 配置工具 -> 外围应用配置器 -> 功能的外围应用配置 -> Ole自动化:支持Ole自动化

使用方法:
declare @source nvarchar(4000)
set @source = '<HTML>dsafsdf<HEAD>'
select dbo.regexReplace(@source, '\<[^\>]+\>', '', 1, 1)
posted @ 2010-01-22 16:43  Silver.Lee  阅读(356)  评论(0编辑  收藏  举报