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