码迷,mamicode.com
首页 > 数据库 > 详细

SQL F_Split函数

时间:2016-08-02 14:59:20      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:

 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

 

SQL F_Split函数

标签:

原文地址:http://www.cnblogs.com/quiland/p/F_Split.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!