SQL2000:使用正则表达式

+展开
-SQL
/*  
 功能:实现正则表达式替换 
  
 调用示例: 
 select dbo.fn_RegexReplace('sdfasfjksdjfa12k232132134324lsdjlfka','[a-z]','',1,1) --替换所有字母 
--select dbo.fn_RegexReplace(columnname,'<\/*[^<>]*>','',1,1) from table --替换所有HTML代码 

CREATE function fn_RegexReplace 

    @source        ntext,           --原字符串 
    @regexp        varchar(1000),  --正则表达式 
    @replace      varchar(1000),  --替换值 
    @globalReplace bit = 0,         --是否是全局替换 
    @ignoreCase    bit = 0          --是否忽略大小写 

returns varchar(8000) 
AS 

begin 
    declare @hr integer
             @objRegExp integer
             @result varchar(8000) 
               
    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 

加支付宝好友偷能量挖...


评论(0)网络
阅读(115)喜欢(0)SQL及数据库