全字匹配替換函式

2021-08-25 21:57:43 字數 1122 閱讀 6270

alter function [dbo].[wholewordreplace](

@s nvarchar(1000) --要搜尋的字串

,@s1 nvarchar(200) --要查詢的字串

,@s2 nvarchar(200) --替換字串

)returns nvarchar(1000)

asbegin

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;

endselect @i=charindex(@s1, @s, @i+1);

endselect @result=@s

return @result

end

乙個全字匹配的另類演算法

如果要從乙個字串中匹配某個指定字串 即查詢指定字串是否在某個字串中 那麼除了按字元逐個搜尋外,還有乙個另類通俗的演算法。下面請跟我來。如下 僅給出delphi的實現 functionsearchstr bestr,substr string integer var oldlength integer...

使用mysql的replace函式替換字串

最近在研究cms,在資料轉換的時候需要用到mysql的replace函式,這裡簡單介紹一下!比如你要將 表 tb1裡面的 f1欄位的abc替換為def update tb1 set f1 replace f1,abc def replace str,from str,to str 在字串 str 中...

使用mysql的replace函式替換字串

最近在研究cms,在資料轉換的時候需要用到mysql的replace函式,這裡簡單介紹一下!比如你要將 表 tb1裡面的 f1欄位的abc替換為def update tb1 set f1 replace f1,abc def replace str,from str,to str 在字串 str 中...