全字匹配替换函数

ALTER function [dbo].[WholeWordReplace](
@s nvarchar(1000) --要搜索的字符串
,@s1 nvarchar(200) --要查找的字符串
,@s2 nvarchar(200) --替换字符串
)
returns nvarchar(1000)
as
begin

declare
@result nvarchar(1000) --返回值
,@prec nchar(1) --前一个字符
,@succ nchar(1) --后一个字符
,@i int --位置
;

SELECT @i=charindex(@s1, @s, 1);

while @i>0
begin
SELECT @prec=substring(@s,@i-1,1)
,@succ=substring(@s,@i+len(@s1),1);
--判断此字符串的前后字符, 在前后字符都不是字母、数字、_、@、#、$(命名规则中所有允许的字符)的情况下,对其替换
if (@prec < 'a' or @prec > 'z') and (@prec < 'A' or @prec > 'Z')
AND (@prec < '0' or @prec > '9')
AND (@prec!='_') AND (@prec!='@') AND (@prec!='#') AND (@prec!='$')

and (@succ < 'a' or @succ > 'z') and (@succ < 'A' or @succ > 'Z')
AND (@succ < '0' or @succ > '9')
AND (@succ!='_') AND (@succ!='@') AND (@succ!='#') AND (@succ!='$')
begin
SELECT @s = stuff(@s, @i, len(@s1), @s2), @i=@i+Len(@s2)-1;
end
SELECT @i=charindex(@s1, @s, @i+1);
end
SELECT @result=@s
return @result
END

参考正则替换:

http://blog.csdn.net/coleling/archive/2011/01/27/6166419.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值