在线咨询
QQ咨询
服务热线
服务热线:13125520620
TOP

正则表达式应用--利用正则替换字符-数据库

发布时间:2011-11-12 浏览:4271

/*
    利用正则表达式替换字符

    改编自国外一个站点的一篇文章,记不清了

    --vivianfdlpw 2005.9(引用请保留此信息)

    调用:

    1.获取字符串中的英文字符
    declare @str varchar(100)
    set @str='xyz123z5'
    select dbo.regexReplace(@str,'[^a-zA-Z]','',1,1)

    2.获取字符串中的英文字符长度
    declare @str varchar(100)
    set @str='xyz123z5'
    select len(dbo.regexReplace(@str,'[^a-zA-Z]','',1,1))
   
*/
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

TAG
软件定制,软件开发,瀚森HANSEN
0
该内容对我有帮助