欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » Sql随手笔记 » 正文

在SQL Server中替换第一个匹配结果

创建时间:2017年06月12日 15:05  阅读次数:(709)
分享到:
有替换字符串的需求时,我们第一个想到的函数一定是REPLACE函数,但REPLACE函数会替换字符串的所有的匹配结果,如果我们只想要替换匹配结果中的第一个要怎么处理呢?用REPLACE肯定是不行了,我们可以借助STUFF来实现。

STUFF用法
1、作用:删除指定长度的字符,并在指定的起点处插入另一组字符。
2、语法:STUFF ( character_expression , start , length ,character_expression )
3、示例:以下示例在第一个字符串 abcdef 中删除从第 2 个位置(字符 b)开始的三个字符,然后在删除的起始位置插入第二个字符串,从而创建并返回一个字符串

SELECT STUFF('abcdef', 2, 3, 'mn')
GO

最后结果是:amnef

有了上面的示例,我们创建一个自定义函数,代码如下:
Create FUNCTION [dbo].[fn_ReplaceFirst]   
(  
    @source nvarchar(max), @findStr nvarchar(1000), @repStr nvarchar(1000)  
)  
RETURNS nvarchar(max)  
AS  
BEGIN  
    DECLARE @ResultVar nvarchar(max) 
    DECLARE @Pos int          
    set @Pos = CHARINDEX(@findStr, @source)  
      
    if @Pos = 0 
return @source    
      
    set @ResultVar = stuff(@source, @Pos, len(@findStr), @repStr)  
      
    RETURN @ResultVar  
  
END

调用结果如下:
http://www.lmwlove.com/ac/ID1187

可以看到到,fn_ReplaceFirst函数只替换了第一个abc,而REPLACE函数替换了所有的abc。
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 89+41=? 的结果(结果是:130)
结  果: