SQL Server 2005,2008 正则表达式 替换函数应用详解

复制代码
CREATE function dbo.regexReplace 
( 
@source ntext, --原字符串 
@regexp varchar(1000), --正则表达式 
@replace varchar(1000), --替换值 
@globalReplace bit = 1, --是否是全局替换 
@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 
复制代码

配置对扩展存储过程的支持


Microsoft SQL Server 2005 -> 配置工具 -> 外围应用配置器 -> 功能的外围应用配置 -> Ole自动化:支持Ole自动化 


Microsoft SQL Server 2008 -> 在服务器节点上,点击右键,选择“方面”,然后可以看到有很多方面的设置,其中有一项就是“外围应用配置器”

使用举例1 代码如下:


declare @source nvarchar(4000)
set @source = 'dsafsdf'
select dbo.regexReplace(@source, '\<[^\>]+\>', '', 1, 1)


使用举例2: (将数据库字段中含有<font color='#ff0000'>aaa</font>替换为<font>aaa</font>)
Select id,dbo.regexReplace(字段,'<font([^>])*>','<font>',1,0) AS 别名 From 表  

posted @   simadi  阅读(710)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示