SQL SERVER字串處理

2021-07-10 09:48:09 字數 1805 閱讀 1657

1、將字串按分隔符擷取為類陣列。實現方式:根據分割符,找到分隔符在主串中的位置,然後根據位置,擷取主串前面的部分,存入表,將後面的部分賦值給主串,如此迴圈往復,直至結束。

create function split(  

@string varchar(255),--待分割字串

@separator varchar(255)--分割符

)returns @array table(item varchar(255))

as

begin

declare @begin int,@end int,@item varchar(255)

set @begin = 1

set @end=charindex(@separator,@string,@begin)

while(@end<>0)

begin

set @item = substring(@string,@begin,@end-@begin)

insert into @array(item) values(@item)

set @begin = @end+1

set @end=charindex(@separator,@string,@begin)

end

set @item = substring(@string,@begin,len(@string)+1-@begin)

if (len(@item)>0)

insert into @array(item) values(substring(@string,@begin,len(@string)+1-@begin))

return

end

2、實現方式: 實現方式與上面差不多,仍然依靠根據將字串擷取的方式。如看字串『asdf,dfg' 是否存在非空字串在字串'str,asd,dsgf,dfg' 裡面。開始將字串『asdf,dfg'根據擷取,然後匹配。。。

select dbo.cgf_fn_search('str,asd,dsgf,dfg','asdf',',');

create function cgf_fn_search(@instr varchar(500),@fndstr varchar(500),@doc varchar(5))

returns int

asbegin

declare

@i int,

@c varchar(500),

@fstr varchar(500)

set @fstr = @fndstr

while(len(@fstr) > 0)

begin

set @i = charindex(@doc, @fstr)

if(@i = 0)

begin

if(charindex(@fstr,@instr) > 0)

return 1

else

return 0

endelse

begin

set @c = substring(@fstr,1,@i-1)

if(charindex(@c,@instr) > 0)

return 1

else

set @fstr = substring(@fstr,@i+len(@doc),len(@fstr))

endend

return 0

end

SQL Server 字串處理

declare str varchar 50 set str ap fqc 2014072300004 獲取指定字元第一次出現的位置 select patindex str 返回 3 獲取指定字元第一次出現的位置之前的字串 select substring str,1,charindex str 1...

sql server 字串處理

判斷字串是否包含指定字串 charindex 22 11233 0執行字串sql語句 不帶引數的 declare sql nvarchar max set sql select from 表名 exec sp executesql sql 帶引數的 declare sql nvarchar max ...

SQL Server 字串處理

declare str varchar 50 set str ap fqc 2014072300004 獲取指定字元第一次出現的位置 select patindex str 返回 3 獲取指定字元第一次出現的位置之前的字串 select substring str,1,charindex str 1...