终于找到个可以在sql2000下用的正则啦,哈哈

CREATE   function  dbo.regexReplace
(
@source   ntext ,     -- 原字符串
@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

调用:select dbo.regexReplace('sdfasfjksdjfa12k232132134324lsdjlfka','[a-z]','',1,1)
替换字符串里的所有字母

你可能感兴趣的:(终于找到个可以在sql2000下用的正则啦,哈哈)