标签:
f_split函数把“逗号分隔的列值” 转换成表记录,可用于in、exist做关联查询。
f_split函数:
--==========================================
-- created by: mark.yang
-- create date: 2016-8-2
-- description: f_split函数把“逗号分隔的列值” 转换成表记录
-- test: select * from F_Split(u.groupID,‘,‘)
--========================================
create function [dbo].[F_Split](@SourceSql varchar(8000),@StrSeprate varchar(10))
returns @temp table(id int, value varchar(100))
as
BEGIN
--第一种写法
declare @i int,@j int
set @SourceSql=rtrim(ltrim(@SourceSql))
set @i=charindex(@StrSeprate,@SourceSql)
set @j=0
while @i>=1
begin
insert @temp values( @j+1,left(@SourceSql,@i-1))
set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i)
set @i=charindex(@StrSeprate,@SourceSql)
set @j=@j+1
end
if @SourceSql<>‘‘
insert @temp values(@i,@SourceSql)
return
--第二种写法
/* while(charindex(@split,@c)<>0)
BEGIN
insert @t(col) values (substring(@c,1,charindex(@split,@c)-1))
set @c = stuff(@c,1,charindex(@split,@c),‘‘)
end
insert @t(col) values (@c)
Delete From @t Where ISNULL(col,‘‘)=‘‘
return */
end
GO
标签:
原文地址:http://www.cnblogs.com/quiland/p/F_Split.html