日期:2014-05-17 浏览次数:20503 次
create function f_splitstr(@SourceSql varchar(8000),@StrSeprate varchar(100)) returns @temp table(F1 varchar(100)) as begin declare @ch as varchar(100) set @SourceSql=@SourceSql+@StrSeprate while(@SourceSql<>'') begin set @ch=left(@SourceSql,charindex(',',@SourceSql,1)-1) insert @temp values(@ch) set @SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'') end return end ----调用 select *,'2012-10-30' as 日期 from dbo.f_splitstr('1,2,3,4',',')
------解决方案--------------------
简单的拆分的话,用内置函数最快
------解决方案--------------------
就是一般的循环拆分了。
create function f_split(@c varchar(2000),@split varchar(2)) returns @t table(col varchar(20)) as begin 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) return end go select * from dbo.f_split('dfkd,dfdkdf,dfdkf,dffjk',',') drop function f_split col -------------------- dfkd dfdkdf dfdkf dffjk
------解决方案--------------------
4个以下用parsename 4个以上用自定义函数。