例如需要把字符串中的a,c,e替换为u,
一般是
update tab set col=replace(col,'a','u')
update tab set col=replace(col,'c','u')
update tab set col=replace(col,'e','u')测试过replace嵌套的效果跟以上一样,
既然都是替换为u, 请问replace函数是否可使用通配符?
即 replace(col,[通配符],'u') ? 怎写?

解决方案 »

  1.   

    额写错了,replace貌似也不行的。
      

  2.   

    可以考虑正则,有网友发过.
    ALTER FUNCTION [dbo].[RegexReplace]  
    (  
        @string VARCHAR(MAX),   --被替换的字符串  
        @pattern VARCHAR(255),  --替换模板  
        @replacestr VARCHAR(255),   --替换后的字符串  
        @IgnoreCase INT = 0 --0区分大小写 1不区分大小写  
    )  
    RETURNS VARCHAR(8000)  
    AS   
    BEGIN  
        DECLARE @objRegex INT, @retstr VARCHAR(8000)  
        --创建对象  
        EXEC sp_OACreate 'VBScript.RegExp', @objRegex OUT  
        --设置属性  
        EXEC sp_OASetProperty @objRegex, 'Pattern', @pattern  
        EXEC sp_OASetProperty @objRegex, 'IgnoreCase', @IgnoreCase  
        EXEC sp_OASetProperty @objRegex, 'Global', 1  
        --执行  
        EXEC sp_OAMethod @objRegex, 'Replace', @retstr OUT, @string, @replacestr  
        --释放  
        EXECUTE sp_OADestroy @objRegex  
        RETURN @retstr  
    END 
      

  3.   

    嵌套不必扫描多次
    update tab set col=replace(replace(replace(col,'a','u'),'c','u'),'e','u')