從目標字串中查詢是否有指定乙個或多個子字串

2021-03-31 19:57:40 字數 1970 閱讀 9452

/**************************************

*fn_findstring

**從目標字串中查詢是否有指定乙個或多個子字串

**xspf.**@gmail.***

***************************************/

--@strdest:目標字串','分隔

--@strpattern:需匹配字串(','分隔)

--返回:找到的所有匹配項

if exists(select [name] from sysobjects where [name] = 'fn_findstring' and [type] = 'tf')

begin

drop function fn_findstring

endgo

create function fn_findstring(@strdest varchar(255),@strpattern varchar(255))

returns @result table(substr varchar(31))

asbegin

declare @startpos int,

@***mapos int

declare @destsubstrtable table(substr varchar(31))

declare @patternsubstrtable table(substr varchar(31))

/*需匹配的字串拆分為子字串*/

set @startpos = 0

set @***mapos = charindex(',',@strpattern,@startpos) 

while(@***mapos!=0)

begin

insert into @patternsubstrtable values(ltrim(rtrim(substring(@strpattern,@startpos,@***mapos-@startpos))))

set @startpos = @***mapos + 1

set @***mapos = charindex(',',@strpattern,@startpos)

endinsert into @patternsubstrtable values(ltrim(rtrim(substring(@strpattern,@startpos,len(@strpattern)+1-@startpos))))

/*目標字串拆分為子字串*/

set @startpos = 0

set @***mapos = charindex(',',@strdest,@startpos) 

while(@***mapos!=0)

begin

insert into @destsubstrtable values(ltrim(rtrim(substring(@strdest,@startpos,@***mapos-@startpos))))

set @startpos = @***mapos + 1

set @***mapos = charindex(',',@strdest,@startpos)

endinsert into @destsubstrtable values(ltrim(rtrim(substring(@strdest,@startpos,len(@strdest)+1-@startpos))))

/*結果為目標字串中所有匹配項*/

insert into @result

select lhs.* from @destsubstrtable as lhs join @patternsubstrtable as rhs

on lhs.substr = rhs.substr

return

endgo

select * from fn_findstring('10,20,25,26,28,30,32','12,1,20,30')

go

在字串中查詢是否有重複字元

字串型別的題目是面試筆試最青睞的型別。之一。最近陸陸續續重新開始看些基礎的東西,真是 三天不練手生 很多東西都忘得差不多了。記錄在這裡偶爾回顧的時候還能翻來看看。貼上來的程式經過測試的,但也可能有隱藏的bug。方法一 這是最節省記憶體的方法,但是效率一般般。複雜度為o n2 思路是,從字串的第乙個字...

PHP查詢字串中是否包含多個指定字串

我有乙個字串,需要檢查幾個字元。我可以用strpos 做到這一點。但是在這種情況下,我將需要多次使用strpos 像這樣的東西 if strpos str,false strpos str,false strpos str,false strpos str,false strpos str,fals...

從源字串查詢指定字串的實現

從源字串查詢目標字串 resourcecharline 源字串 targetline 目標字串 返回目標字串在源字串中第一次出現的位置 找不到返回 1 int findcharline const char reourcecharline,const char targetline 相等的話 els...