/**************************************
*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...