@regexp varchar(1000),--正则表达式@replace varchar(1000),--替换值@globalReplace bit=1,--是否是全局替换@ignoreCase bit=0 --是否忽略大小写)returnS varchar(1000)AS begin declare@hr intege declare@objRegExp integer declare@result varchar(5000)exec@hr =sp_OACreate'VBScript.RegExp',@objRegExp OUTPUT IF@hr <>0 begin exec@hr =sp_OADestroy@objRegExp returnnullend exec@hr =sp_OASetProperty@objRegExp,'Pattern',@regexp IF@hr <>0 begin exec@hr =sp_OADestroy@objRegExp returnnullend exec@hr =sp_OASetProperty@objRegExp,'Global',@globalReplace IF@hr <>0 begin exec@hr =sp_OADestroy@objRegExp returnnullend exec@hr =sp_OASetProperty@objRegExp,'IgnoreCase',@ignoreCase IF@hr <>0 begin exec@hr =sp_OADestroy@objRegExp returnnullend exec@hr =sp_OAMethod@objRegExp,'Replace',@result OUTPUT,@source,@replace IF@hr <>0 begin exec@hr =sp_OADestroy@objRegExp returnnullend exec@hr =sp_OADestroy@objRegExp IF@hr <>0 begin returnnullend return@result end 需要注意的是,即使写好了这个函数,也并不能马上使用。执行这个函数时可能会出现以下的错误:Msg 15281, Level 16, State 1, Line 1 SQL Server blocked access to procedure 'sys.sp_OACreate' of component 'Ole Automation Procedures' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ole Automation Procedures' by using sp_configure. For more information about enabling 'Ole Automation Procedures', see "Surface Area Configuration" in SQL Server Books Online. 这是因为未开启Ole Automation Procedures选项,MSDN中的Ole Automation Procedures选项。执行下面的语句开启这个选项:sp_configure'show advanced options',1;GO RECONFIGURE;GOsp_configure'Ole Automation Procedures',1;GO RECONFIGURE;GO 所有的准备工作都已经做好,那就试验一下吧。 Example1:忽略大小写并替换selectdbo.regexReplace('123456',']*>[^','',1,1) Example2: 使用贪婪匹配 html代码: Also Available - Smith & Hogan: Criminal Law Cases & Materials 10th ed There is, as ever, detailed analysis of the many recent case developments, in particular, a revision of the chapter dealing with secondary liability and joint enterprise. 调用代码:selectdbo.regexReplace(html,']*>(.|\n)*?','',1,1) Example3:去除html标签selectdbo.regexReplace(' Key Contact: Mr Jack, Zhou General Manager Mr Adu, Ho Marketing Director Overseas Sales MsWinny, Luo Sales Manager Overseas Sales',']*>','',1,0) Example4:数据库字段值替换updateBooks。